! function(e, t) {
	"object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
		if (!e.document) throw new Error("jQuery requires a window with a document");
		return t(e)
	} : t(e)
}("undefined" != typeof window ? window : this, function(e, t) {
	function n(e) {
		var t = e.length,
			n = Z.type(e);
		return "function" === n || Z.isWindow(e) ? !1 : 1 === e.nodeType && t ? !0 : "array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e
	}
	function r(e, t, n) {
		if (Z.isFunction(t)) return Z.grep(e, function(e, r) {
			return !!t.call(e, r, e) !== n
		});
		if (t.nodeType) return Z.grep(e, function(e) {
			return e === t !== n
		});
		if ("string" == typeof t) {
			if (at.test(t)) return Z.filter(t, e, n);
			t = Z.filter(t, e)
		}
		return Z.grep(e, function(e) {
			return U.call(t, e) >= 0 !== n
		})
	}
	function i(e, t) {
		for (;
		(e = e[t]) && 1 !== e.nodeType;);
		return e
	}
	function o(e) {
		var t = ht[e] = {};
		return Z.each(e.match(dt) || [], function(e, n) {
			t[n] = !0
		}), t
	}
	function s() {
		J.removeEventListener("DOMContentLoaded", s, !1), e.removeEventListener("load", s, !1), Z.ready()
	}
	function a() {
		Object.defineProperty(this.cache = {}, 0, {
			get: function() {
				return {}
			}
		}), this.expando = Z.expando + Math.random()
	}
	function u(e, t, n) {
		var r;
		if (void 0 === n && 1 === e.nodeType) if (r = "data-" + t.replace(bt, "-$1").toLowerCase(), n = e.getAttribute(r), "string" == typeof n) {
			try {
				n = "true" === n ? !0 : "false" === n ? !1 : "null" === n ? null : +n + "" === n ? +n : xt.test(n) ? Z.parseJSON(n) : n
			} catch (i) {}
			yt.set(e, t, n)
		} else n = void 0;
		return n
	}
	function l() {
		return !0
	}
	function c() {
		return !1
	}
	function f() {
		try {
			return J.activeElement
		} catch (e) {}
	}
	function p(e, t) {
		return Z.nodeName(e, "table") && Z.nodeName(11 !== t.nodeType ? t : t.firstChild, "tr") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e
	}
	function d(e) {
		return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
	}
	function h(e) {
		var t = Pt.exec(e.type);
		return t ? e.type = t[1] : e.removeAttribute("type"), e
	}
	function g(e, t) {
		for (var n = 0, r = e.length; r > n; n++) vt.set(e[n], "globalEval", !t || vt.get(t[n], "globalEval"))
	}
	function m(e, t) {
		var n, r, i, o, s, a, u, l;
		if (1 === t.nodeType) {
			if (vt.hasData(e) && (o = vt.access(e), s = vt.set(t, o), l = o.events)) {
				delete s.handle, s.events = {};
				for (i in l) for (n = 0, r = l[i].length; r > n; n++) Z.event.add(t, i, l[i][n])
			}
			yt.hasData(e) && (a = yt.access(e), u = Z.extend({}, a), yt.set(t, u))
		}
	}
	function v(e, t) {
		var n = e.getElementsByTagName ? e.getElementsByTagName(t || "*") : e.querySelectorAll ? e.querySelectorAll(t || "*") : [];
		return void 0 === t || t && Z.nodeName(e, t) ? Z.merge([e], n) : n
	}
	function y(e, t) {
		var n = t.nodeName.toLowerCase();
		"input" === n && Nt.test(e.type) ? t.checked = e.checked : ("input" === n || "textarea" === n) && (t.defaultValue = e.defaultValue)
	}
	function x(t, n) {
		var r, i = Z(n.createElement(t)).appendTo(n.body),
			o = e.getDefaultComputedStyle && (r = e.getDefaultComputedStyle(i[0])) ? r.display : Z.css(i[0], "display");
		return i.detach(), o
	}
	function b(e) {
		var t = J,
			n = $t[e];
		return n || (n = x(e, t), "none" !== n && n || (Wt = (Wt || Z("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement), t = Wt[0].contentDocument, t.write(), t.close(), n = x(e, t), Wt.detach()), $t[e] = n), n
	}
	function w(e, t, n) {
		var r, i, o, s, a = e.style;
		return n = n || _t(e), n && (s = n.getPropertyValue(t) || n[t]), n && ("" !== s || Z.contains(e.ownerDocument, e) || (s = Z.style(e, t)), It.test(s) && Bt.test(t) && (r = a.width, i = a.minWidth, o = a.maxWidth, a.minWidth = a.maxWidth = a.width = s, s = n.width, a.width = r, a.minWidth = i, a.maxWidth = o)), void 0 !== s ? s + "" : s
	}
	function T(e, t) {
		return {
			get: function() {
				return e() ? void delete this.get : (this.get = t).apply(this, arguments)
			}
		}
	}
	function C(e, t) {
		if (t in e) return t;
		for (var n = t[0].toUpperCase() + t.slice(1), r = t, i = Gt.length; i--;) if (t = Gt[i] + n, t in e) return t;
		return r
	}
	function N(e, t, n) {
		var r = Xt.exec(t);
		return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t
	}
	function k(e, t, n, r, i) {
		for (var o = n === (r ? "border" : "content") ? 4 : "width" === t ? 1 : 0, s = 0; 4 > o; o += 2) "margin" === n && (s += Z.css(e, n + Tt[o], !0, i)), r ? ("content" === n && (s -= Z.css(e, "padding" + Tt[o], !0, i)), "margin" !== n && (s -= Z.css(e, "border" + Tt[o] + "Width", !0, i))) : (s += Z.css(e, "padding" + Tt[o], !0, i), "padding" !== n && (s += Z.css(e, "border" + Tt[o] + "Width", !0, i)));
		return s
	}
	function E(e, t, n) {
		var r = !0,
			i = "width" === t ? e.offsetWidth : e.offsetHeight,
			o = _t(e),
			s = "border-box" === Z.css(e, "boxSizing", !1, o);
		if (0 >= i || null == i) {
			if (i = w(e, t, o), (0 > i || null == i) && (i = e.style[t]), It.test(i)) return i;
			r = s && (Q.boxSizingReliable() || i === e.style[t]), i = parseFloat(i) || 0
		}
		return i + k(e, t, n || (s ? "border" : "content"), r, o) + "px"
	}
	function S(e, t) {
		for (var n, r, i, o = [], s = 0, a = e.length; a > s; s++) r = e[s], r.style && (o[s] = vt.get(r, "olddisplay"), n = r.style.display, t ? (o[s] || "none" !== n || (r.style.display = ""), "" === r.style.display && Ct(r) && (o[s] = vt.access(r, "olddisplay", b(r.nodeName)))) : (i = Ct(r), "none" === n && i || vt.set(r, "olddisplay", i ? n : Z.css(r, "display"))));
		for (s = 0; a > s; s++) r = e[s], r.style && (t && "none" !== r.style.display && "" !== r.style.display || (r.style.display = t ? o[s] || "" : "none"));
		return e
	}
	function j(e, t, n, r, i) {
		return new j.prototype.init(e, t, n, r, i)
	}
	function D() {
		return setTimeout(function() {
			Qt = void 0
		}), Qt = Z.now()
	}
	function A(e, t) {
		var n, r = 0,
			i = {
				height: e
			};
		for (t = t ? 1 : 0; 4 > r; r += 2 - t) n = Tt[r], i["margin" + n] = i["padding" + n] = e;
		return t && (i.opacity = i.width = e), i
	}
	function L(e, t, n) {
		for (var r, i = (nn[t] || []).concat(nn["*"]), o = 0, s = i.length; s > o; o++) if (r = i[o].call(n, t, e)) return r
	}
	function q(e, t, n) {
		var r, i, o, s, a, u, l, c, f = this,
			p = {}, d = e.style,
			h = e.nodeType && Ct(e),
			g = vt.get(e, "fxshow");
		n.queue || (a = Z._queueHooks(e, "fx"), null == a.unqueued && (a.unqueued = 0, u = a.empty.fire, a.empty.fire = function() {
			a.unqueued || u()
		}), a.unqueued++, f.always(function() {
			f.always(function() {
				a.unqueued--, Z.queue(e, "fx").length || a.empty.fire()
			})
		})), 1 === e.nodeType && ("height" in t || "width" in t) && (n.overflow = [d.overflow, d.overflowX, d.overflowY], l = Z.css(e, "display"), c = "none" === l ? vt.get(e, "olddisplay") || b(e.nodeName) : l, "inline" === c && "none" === Z.css(e, "float") && (d.display = "inline-block")), n.overflow && (d.overflow = "hidden", f.always(function() {
			d.overflow = n.overflow[0], d.overflowX = n.overflow[1], d.overflowY = n.overflow[2]
		}));
		for (r in t) if (i = t[r], Kt.exec(i)) {
			if (delete t[r], o = o || "toggle" === i, i === (h ? "hide" : "show")) {
				if ("show" !== i || !g || void 0 === g[r]) continue;
				h = !0
			}
			p[r] = g && g[r] || Z.style(e, r)
		} else l = void 0;
		if (Z.isEmptyObject(p)) "inline" === ("none" === l ? b(e.nodeName) : l) && (d.display = l);
		else {
			g ? "hidden" in g && (h = g.hidden) : g = vt.access(e, "fxshow", {}), o && (g.hidden = !h), h ? Z(e).show() : f.done(function() {
				Z(e).hide()
			}), f.done(function() {
				var t;
				vt.remove(e, "fxshow");
				for (t in p) Z.style(e, t, p[t])
			});
			for (r in p) s = L(h ? g[r] : 0, r, f), r in g || (g[r] = s.start, h && (s.end = s.start, s.start = "width" === r || "height" === r ? 1 : 0))
		}
	}
	function H(e, t) {
		var n, r, i, o, s;
		for (n in e) if (r = Z.camelCase(n), i = t[r], o = e[n], Z.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), s = Z.cssHooks[r], s && "expand" in s) {
			o = s.expand(o), delete e[r];
			for (n in o) n in e || (e[n] = o[n], t[n] = i)
		} else t[r] = i
	}
	function O(e, t, n) {
		var r, i, o = 0,
			s = tn.length,
			a = Z.Deferred().always(function() {
				delete u.elem
			}),
			u = function() {
				if (i) return !1;
				for (var t = Qt || D(), n = Math.max(0, l.startTime + l.duration - t), r = n / l.duration || 0, o = 1 - r, s = 0, u = l.tweens.length; u > s; s++) l.tweens[s].run(o);
				return a.notifyWith(e, [l, o, n]), 1 > o && u ? n : (a.resolveWith(e, [l]), !1)
			}, l = a.promise({
				elem: e,
				props: Z.extend({}, t),
				opts: Z.extend(!0, {
					specialEasing: {}
				}, n),
				originalProperties: t,
				originalOptions: n,
				startTime: Qt || D(),
				duration: n.duration,
				tweens: [],
				createTween: function(t, n) {
					var r = Z.Tween(e, l.opts, t, n, l.opts.specialEasing[t] || l.opts.easing);
					return l.tweens.push(r), r
				},
				stop: function(t) {
					var n = 0,
						r = t ? l.tweens.length : 0;
					if (i) return this;
					for (i = !0; r > n; n++) l.tweens[n].run(1);
					return t ? a.resolveWith(e, [l, t]) : a.rejectWith(e, [l, t]), this
				}
			}),
			c = l.props;
		for (H(c, l.opts.specialEasing); s > o; o++) if (r = tn[o].call(l, e, c, l.opts)) return r;
		return Z.map(c, L, l), Z.isFunction(l.opts.start) && l.opts.start.call(e, l), Z.fx.timer(Z.extend(u, {
			elem: e,
			anim: l,
			queue: l.opts.queue
		})), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always)
	}
	function F(e) {
		return function(t, n) {
			"string" != typeof t && (n = t, t = "*");
			var r, i = 0,
				o = t.toLowerCase().match(dt) || [];
			if (Z.isFunction(n)) for (; r = o[i++];) "+" === r[0] ? (r = r.slice(1) || "*", (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
		}
	}
	function P(e, t, n, r) {
		function i(a) {
			var u;
			return o[a] = !0, Z.each(e[a] || [], function(e, a) {
				var l = a(t, n, r);
				return "string" != typeof l || s || o[l] ? s ? !(u = l) : void 0 : (t.dataTypes.unshift(l), i(l), !1)
			}), u
		}
		var o = {}, s = e === Tn;
		return i(t.dataTypes[0]) || !o["*"] && i("*")
	}
	function M(e, t) {
		var n, r, i = Z.ajaxSettings.flatOptions || {};
		for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
		return r && Z.extend(!0, e, r), e
	}
	function R(e, t, n) {
		for (var r, i, o, s, a = e.contents, u = e.dataTypes;
		"*" === u[0];) u.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
		if (r) for (i in a) if (a[i] && a[i].test(r)) {
			u.unshift(i);
			break
		}
		if (u[0] in n) o = u[0];
		else {
			for (i in n) {
				if (!u[0] || e.converters[i + " " + u[0]]) {
					o = i;
					break
				}
				s || (s = i)
			}
			o = o || s
		}
		return o ? (o !== u[0] && u.unshift(o), n[o]) : void 0
	}
	function W(e, t, n, r) {
		var i, o, s, a, u, l = {}, c = e.dataTypes.slice();
		if (c[1]) for (s in e.converters) l[s.toLowerCase()] = e.converters[s];
		for (o = c.shift(); o;) if (e.responseFields[o] && (n[e.responseFields[o]] = t), !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), u = o, o = c.shift()) if ("*" === o) o = u;
		else if ("*" !== u && u !== o) {
			if (s = l[u + " " + o] || l["* " + o], !s) for (i in l) if (a = i.split(" "), a[1] === o && (s = l[u + " " + a[0]] || l["* " + a[0]])) {
				s === !0 ? s = l[i] : l[i] !== !0 && (o = a[0], c.unshift(a[1]));
				break
			}
			if (s !== !0) if (s && e["throws"]) t = s(t);
			else try {
				t = s(t)
			} catch (f) {
				return {
					state: "parsererror",
					error: s ? f : "No conversion from " + u + " to " + o
				}
			}
		}
		return {
			state: "success",
			data: t
		}
	}
	function $(e, t, n, r) {
		var i;
		if (Z.isArray(t)) Z.each(t, function(t, i) {
			n || En.test(e) ? r(e, i) : $(e + "[" + ("object" == typeof i ? t : "") + "]", i, n, r)
		});
		else if (n || "object" !== Z.type(t)) r(e, t);
		else for (i in t) $(e + "[" + i + "]", t[i], n, r)
	}
	function B(e) {
		return Z.isWindow(e) ? e : 9 === e.nodeType && e.defaultView
	}
	var I = [],
		_ = I.slice,
		z = I.concat,
		X = I.push,
		U = I.indexOf,
		V = {}, Y = V.toString,
		G = V.hasOwnProperty,
		Q = {}, J = e.document,
		K = "2.1.1",
		Z = function(e, t) {
			return new Z.fn.init(e, t)
		}, et = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
		tt = /^-ms-/,
		nt = /-([\da-z])/gi,
		rt = function(e, t) {
			return t.toUpperCase()
		};
	Z.fn = Z.prototype = {
		jquery: K,
		constructor: Z,
		selector: "",
		length: 0,
		toArray: function() {
			return _.call(this)
		},
		get: function(e) {
			return null != e ? 0 > e ? this[e + this.length] : this[e] : _.call(this)
		},
		pushStack: function(e) {
			var t = Z.merge(this.constructor(), e);
			return t.prevObject = this, t.context = this.context, t
		},
		each: function(e, t) {
			return Z.each(this, e, t)
		},
		map: function(e) {
			return this.pushStack(Z.map(this, function(t, n) {
				return e.call(t, n, t)
			}))
		},
		slice: function() {
			return this.pushStack(_.apply(this, arguments))
		},
		first: function() {
			return this.eq(0)
		},
		last: function() {
			return this.eq(-1)
		},
		eq: function(e) {
			var t = this.length,
				n = +e + (0 > e ? t : 0);
			return this.pushStack(n >= 0 && t > n ? [this[n]] : [])
		},
		end: function() {
			return this.prevObject || this.constructor(null)
		},
		push: X,
		sort: I.sort,
		splice: I.splice
	}, Z.extend = Z.fn.extend = function() {
		var e, t, n, r, i, o, s = arguments[0] || {}, a = 1,
			u = arguments.length,
			l = !1;
		for ("boolean" == typeof s && (l = s, s = arguments[a] || {}, a++), "object" == typeof s || Z.isFunction(s) || (s = {}), a === u && (s = this, a--); u > a; a++) if (null != (e = arguments[a])) for (t in e) n = s[t], r = e[t], s !== r && (l && r && (Z.isPlainObject(r) || (i = Z.isArray(r))) ? (i ? (i = !1, o = n && Z.isArray(n) ? n : []) : o = n && Z.isPlainObject(n) ? n : {}, s[t] = Z.extend(l, o, r)) : void 0 !== r && (s[t] = r));
		return s
	}, Z.extend({
		expando: "jQuery" + (K + Math.random()).replace(/\D/g, ""),
		isReady: !0,
		error: function(e) {
			throw new Error(e)
		},
		noop: function() {},
		isFunction: function(e) {
			return "function" === Z.type(e)
		},
		isArray: Array.isArray,
		isWindow: function(e) {
			return null != e && e === e.window
		},
		isNumeric: function(e) {
			return !Z.isArray(e) && e - parseFloat(e) >= 0
		},
		isPlainObject: function(e) {
			return "object" !== Z.type(e) || e.nodeType || Z.isWindow(e) ? !1 : e.constructor && !G.call(e.constructor.prototype, "isPrototypeOf") ? !1 : !0
		},
		isEmptyObject: function(e) {
			var t;
			for (t in e) return !1;
			return !0
		},
		type: function(e) {
			return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? V[Y.call(e)] || "object" : typeof e
		},
		globalEval: function(e) {
			var t, n = eval;
			e = Z.trim(e), e && (1 === e.indexOf("use strict") ? (t = J.createElement("script"), t.text = e, J.head.appendChild(t).parentNode.removeChild(t)) : n(e))
		},
		camelCase: function(e) {
			return e.replace(tt, "ms-").replace(nt, rt)
		},
		nodeName: function(e, t) {
			return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
		},
		each: function(e, t, r) {
			var i, o = 0,
				s = e.length,
				a = n(e);
			if (r) {
				if (a) for (; s > o && (i = t.apply(e[o], r), i !== !1); o++);
				else for (o in e) if (i = t.apply(e[o], r), i === !1) break
			} else if (a) for (; s > o && (i = t.call(e[o], o, e[o]), i !== !1); o++);
			else for (o in e) if (i = t.call(e[o], o, e[o]), i === !1) break;
			return e
		},
		trim: function(e) {
			return null == e ? "" : (e + "").replace(et, "")
		},
		makeArray: function(e, t) {
			var r = t || [];
			return null != e && (n(Object(e)) ? Z.merge(r, "string" == typeof e ? [e] : e) : X.call(r, e)), r
		},
		inArray: function(e, t, n) {
			return null == t ? -1 : U.call(t, e, n)
		},
		merge: function(e, t) {
			for (var n = +t.length, r = 0, i = e.length; n > r; r++) e[i++] = t[r];
			return e.length = i, e
		},
		grep: function(e, t, n) {
			for (var r, i = [], o = 0, s = e.length, a = !n; s > o; o++) r = !t(e[o], o), r !== a && i.push(e[o]);
			return i
		},
		map: function(e, t, r) {
			var i, o = 0,
				s = e.length,
				a = n(e),
				u = [];
			if (a) for (; s > o; o++) i = t(e[o], o, r), null != i && u.push(i);
			else for (o in e) i = t(e[o], o, r), null != i && u.push(i);
			return z.apply([], u)
		},
		guid: 1,
		proxy: function(e, t) {
			var n, r, i;
			return "string" == typeof t && (n = e[t], t = e, e = n), Z.isFunction(e) ? (r = _.call(arguments, 2), i = function() {
				return e.apply(t || this, r.concat(_.call(arguments)))
			}, i.guid = e.guid = e.guid || Z.guid++, i) : void 0
		},
		now: Date.now,
		support: Q
	}), Z.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(e, t) {
		V["[object " + t + "]"] = t.toLowerCase()
	});
	var it = function(e) {
		function t(e, t, n, r) {
			var i, o, s, a, u, l, f, d, h, g;
			if ((t ? t.ownerDocument || t : $) !== q && L(t), t = t || q, n = n || [], !e || "string" != typeof e) return n;
			if (1 !== (a = t.nodeType) && 9 !== a) return [];
			if (O && !r) {
				if (i = yt.exec(e)) if (s = i[1]) {
					if (9 === a) {
						if (o = t.getElementById(s), !o || !o.parentNode) return n;
						if (o.id === s) return n.push(o), n
					} else if (t.ownerDocument && (o = t.ownerDocument.getElementById(s)) && R(t, o) && o.id === s) return n.push(o), n
				} else {
					if (i[2]) return Z.apply(n, t.getElementsByTagName(e)), n;
					if ((s = i[3]) && w.getElementsByClassName && t.getElementsByClassName) return Z.apply(n, t.getElementsByClassName(s)), n
				}
				if (w.qsa && (!F || !F.test(e))) {
					if (d = f = W, h = t, g = 9 === a && e, 1 === a && "object" !== t.nodeName.toLowerCase()) {
						for (l = k(e), (f = t.getAttribute("id")) ? d = f.replace(bt, "\\$&") : t.setAttribute("id", d), d = "[id='" + d + "'] ", u = l.length; u--;) l[u] = d + p(l[u]);
						h = xt.test(e) && c(t.parentNode) || t, g = l.join(",")
					}
					if (g) try {
						return Z.apply(n, h.querySelectorAll(g)), n
					} catch (m) {} finally {
						f || t.removeAttribute("id")
					}
				}
			}
			return S(e.replace(ut, "$1"), t, n, r)
		}
		function n() {
			function e(n, r) {
				return t.push(n + " ") > T.cacheLength && delete e[t.shift()], e[n + " "] = r
			}
			var t = [];
			return e
		}
		function r(e) {
			return e[W] = !0, e
		}
		function i(e) {
			var t = q.createElement("div");
			try {
				return !!e(t)
			} catch (n) {
				return !1
			} finally {
				t.parentNode && t.parentNode.removeChild(t), t = null
			}
		}
		function o(e, t) {
			for (var n = e.split("|"), r = e.length; r--;) T.attrHandle[n[r]] = t
		}
		function s(e, t) {
			var n = t && e,
				r = n && 1 === e.nodeType && 1 === t.nodeType && (~t.sourceIndex || Y) - (~e.sourceIndex || Y);
			if (r) return r;
			if (n) for (; n = n.nextSibling;) if (n === t) return -1;
			return e ? 1 : -1
		}
		function a(e) {
			return function(t) {
				var n = t.nodeName.toLowerCase();
				return "input" === n && t.type === e
			}
		}
		function u(e) {
			return function(t) {
				var n = t.nodeName.toLowerCase();
				return ("input" === n || "button" === n) && t.type === e
			}
		}
		function l(e) {
			return r(function(t) {
				return t = +t, r(function(n, r) {
					for (var i, o = e([], n.length, t), s = o.length; s--;) n[i = o[s]] && (n[i] = !(r[i] = n[i]))
				})
			})
		}
		function c(e) {
			return e && typeof e.getElementsByTagName !== V && e
		}
		function f() {}
		function p(e) {
			for (var t = 0, n = e.length, r = ""; n > t; t++) r += e[t].value;
			return r
		}
		function d(e, t, n) {
			var r = t.dir,
				i = n && "parentNode" === r,
				o = I++;
			return t.first ? function(t, n, o) {
				for (; t = t[r];) if (1 === t.nodeType || i) return e(t, n, o)
			} : function(t, n, s) {
				var a, u, l = [B, o];
				if (s) {
					for (; t = t[r];) if ((1 === t.nodeType || i) && e(t, n, s)) return !0
				} else for (; t = t[r];) if (1 === t.nodeType || i) {
					if (u = t[W] || (t[W] = {}), (a = u[r]) && a[0] === B && a[1] === o) return l[2] = a[2];
					if (u[r] = l, l[2] = e(t, n, s)) return !0
				}
			}
		}
		function h(e) {
			return e.length > 1 ? function(t, n, r) {
				for (var i = e.length; i--;) if (!e[i](t, n, r)) return !1;
				return !0
			} : e[0]
		}
		function g(e, n, r) {
			for (var i = 0, o = n.length; o > i; i++) t(e, n[i], r);
			return r
		}
		function m(e, t, n, r, i) {
			for (var o, s = [], a = 0, u = e.length, l = null != t; u > a; a++)(o = e[a]) && (!n || n(o, r, i)) && (s.push(o), l && t.push(a));
			return s
		}
		function v(e, t, n, i, o, s) {
			return i && !i[W] && (i = v(i)), o && !o[W] && (o = v(o, s)), r(function(r, s, a, u) {
				var l, c, f, p = [],
					d = [],
					h = s.length,
					v = r || g(t || "*", a.nodeType ? [a] : a, []),
					y = !e || !r && t ? v : m(v, p, e, a, u),
					x = n ? o || (r ? e : h || i) ? [] : s : y;
				if (n && n(y, x, a, u), i) for (l = m(x, d), i(l, [], a, u), c = l.length; c--;)(f = l[c]) && (x[d[c]] = !(y[d[c]] = f));
				if (r) {
					if (o || e) {
						if (o) {
							for (l = [], c = x.length; c--;)(f = x[c]) && l.push(y[c] = f);
							o(null, x = [], l, u)
						}
						for (c = x.length; c--;)(f = x[c]) && (l = o ? tt.call(r, f) : p[c]) > -1 && (r[l] = !(s[l] = f))
					}
				} else x = m(x === s ? x.splice(h, x.length) : x), o ? o(null, s, x, u) : Z.apply(s, x)
			})
		}
		function y(e) {
			for (var t, n, r, i = e.length, o = T.relative[e[0].type], s = o || T.relative[" "], a = o ? 1 : 0, u = d(function(e) {
				return e === t
			}, s, !0), l = d(function(e) {
				return tt.call(t, e) > -1
			}, s, !0), c = [function(e, n, r) {
				return !o && (r || n !== j) || ((t = n).nodeType ? u(e, n, r) : l(e, n, r))
			}]; i > a; a++) if (n = T.relative[e[a].type]) c = [d(h(c), n)];
			else {
				if (n = T.filter[e[a].type].apply(null, e[a].matches), n[W]) {
					for (r = ++a; i > r && !T.relative[e[r].type]; r++);
					return v(a > 1 && h(c), a > 1 && p(e.slice(0, a - 1).concat({
						value: " " === e[a - 2].type ? "*" : ""
					})).replace(ut, "$1"), n, r > a && y(e.slice(a, r)), i > r && y(e = e.slice(r)), i > r && p(e))
				}
				c.push(n)
			}
			return h(c)
		}
		function x(e, n) {
			var i = n.length > 0,
				o = e.length > 0,
				s = function(r, s, a, u, l) {
					var c, f, p, d = 0,
						h = "0",
						g = r && [],
						v = [],
						y = j,
						x = r || o && T.find.TAG("*", l),
						b = B += null == y ? 1 : Math.random() || .1,
						w = x.length;
					for (l && (j = s !== q && s); h !== w && null != (c = x[h]); h++) {
						if (o && c) {
							for (f = 0; p = e[f++];) if (p(c, s, a)) {
								u.push(c);
								break
							}
							l && (B = b)
						}
						i && ((c = !p && c) && d--, r && g.push(c))
					}
					if (d += h, i && h !== d) {
						for (f = 0; p = n[f++];) p(g, v, s, a);
						if (r) {
							if (d > 0) for (; h--;) g[h] || v[h] || (v[h] = J.call(u));
							v = m(v)
						}
						Z.apply(u, v), l && !r && v.length > 0 && d + n.length > 1 && t.uniqueSort(u)
					}
					return l && (B = b, j = y), g
				};
			return i ? r(s) : s
		}
		var b, w, T, C, N, k, E, S, j, D, A, L, q, H, O, F, P, M, R, W = "sizzle" + -new Date,
			$ = e.document,
			B = 0,
			I = 0,
			_ = n(),
			z = n(),
			X = n(),
			U = function(e, t) {
				return e === t && (A = !0), 0
			}, V = "undefined",
			Y = 1 << 31,
			G = {}.hasOwnProperty,
			Q = [],
			J = Q.pop,
			K = Q.push,
			Z = Q.push,
			et = Q.slice,
			tt = Q.indexOf || function(e) {
				for (var t = 0, n = this.length; n > t; t++) if (this[t] === e) return t;
				return -1
			}, nt = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
			rt = "[\\x20\\t\\r\\n\\f]",
			it = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
			ot = it.replace("w", "w#"),
			st = "\\[" + rt + "*(" + it + ")(?:" + rt + "*([*^$|!~]?=)" + rt + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + ot + "))|)" + rt + "*\\]",
			at = ":(" + it + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + st + ")*)|.*)\\)|)",
			ut = new RegExp("^" + rt + "+|((?:^|[^\\\\])(?:\\\\.)*)" + rt + "+$", "g"),
			lt = new RegExp("^" + rt + "*," + rt + "*"),
			ct = new RegExp("^" + rt + "*([>+~]|" + rt + ")" + rt + "*"),
			ft = new RegExp("=" + rt + "*([^\\]'\"]*?)" + rt + "*\\]", "g"),
			pt = new RegExp(at),
			dt = new RegExp("^" + ot + "$"),
			ht = {
				ID: new RegExp("^#(" + it + ")"),
				CLASS: new RegExp("^\\.(" + it + ")"),
				TAG: new RegExp("^(" + it.replace("w", "w*") + ")"),
				ATTR: new RegExp("^" + st),
				PSEUDO: new RegExp("^" + at),
				CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + rt + "*(even|odd|(([+-]|)(\\d*)n|)" + rt + "*(?:([+-]|)" + rt + "*(\\d+)|))" + rt + "*\\)|)", "i"),
				bool: new RegExp("^(?:" + nt + ")$", "i"),
				needsContext: new RegExp("^" + rt + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + rt + "*((?:-\\d)?\\d*)" + rt + "*\\)|)(?=[^-]|$)", "i")
			}, gt = /^(?:input|select|textarea|button)$/i,
			mt = /^h\d$/i,
			vt = /^[^{]+\{\s*\[native \w/,
			yt = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
			xt = /[+~]/,
			bt = /'|\\/g,
			wt = new RegExp("\\\\([\\da-f]{1,6}" + rt + "?|(" + rt + ")|.)", "ig"),
			Tt = function(e, t, n) {
				var r = "0x" + t - 65536;
				return r !== r || n ? t : 0 > r ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
			};
		try {
			Z.apply(Q = et.call($.childNodes), $.childNodes), Q[$.childNodes.length].nodeType
		} catch (Ct) {
			Z = {
				apply: Q.length ? function(e, t) {
					K.apply(e, et.call(t))
				} : function(e, t) {
					for (var n = e.length, r = 0; e[n++] = t[r++];);
					e.length = n - 1
				}
			}
		}
		w = t.support = {}, N = t.isXML = function(e) {
			var t = e && (e.ownerDocument || e).documentElement;
			return t ? "HTML" !== t.nodeName : !1
		}, L = t.setDocument = function(e) {
			var t, n = e ? e.ownerDocument || e : $,
				r = n.defaultView;
			return n !== q && 9 === n.nodeType && n.documentElement ? (q = n, H = n.documentElement, O = !N(n), r && r !== r.top && (r.addEventListener ? r.addEventListener("unload", function() {
				L()
			}, !1) : r.attachEvent && r.attachEvent("onunload", function() {
				L()
			})), w.attributes = i(function(e) {
				return e.className = "i", !e.getAttribute("className")
			}), w.getElementsByTagName = i(function(e) {
				return e.appendChild(n.createComment("")), !e.getElementsByTagName("*").length
			}), w.getElementsByClassName = vt.test(n.getElementsByClassName) && i(function(e) {
				return e.innerHTML = "<div class='a'></div><div class='a i'></div>", e.firstChild.className = "i", 2 === e.getElementsByClassName("i").length
			}), w.getById = i(function(e) {
				return H.appendChild(e).id = W, !n.getElementsByName || !n.getElementsByName(W).length
			}), w.getById ? (T.find.ID = function(e, t) {
				if (typeof t.getElementById !== V && O) {
					var n = t.getElementById(e);
					return n && n.parentNode ? [n] : []
				}
			}, T.filter.ID = function(e) {
				var t = e.replace(wt, Tt);
				return function(e) {
					return e.getAttribute("id") === t
				}
			}) : (delete T.find.ID, T.filter.ID = function(e) {
				var t = e.replace(wt, Tt);
				return function(e) {
					var n = typeof e.getAttributeNode !== V && e.getAttributeNode("id");
					return n && n.value === t
				}
			}), T.find.TAG = w.getElementsByTagName ? function(e, t) {
				return typeof t.getElementsByTagName !== V ? t.getElementsByTagName(e) : void 0
			} : function(e, t) {
				var n, r = [],
					i = 0,
					o = t.getElementsByTagName(e);
				if ("*" === e) {
					for (; n = o[i++];) 1 === n.nodeType && r.push(n);
					return r
				}
				return o
			}, T.find.CLASS = w.getElementsByClassName && function(e, t) {
				return typeof t.getElementsByClassName !== V && O ? t.getElementsByClassName(e) : void 0
			}, P = [], F = [], (w.qsa = vt.test(n.querySelectorAll)) && (i(function(e) {
				e.innerHTML = "<select msallowclip=''><option selected=''></option></select>", e.querySelectorAll("[msallowclip^='']").length && F.push("[*^$]=" + rt + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || F.push("\\[" + rt + "*(?:value|" + nt + ")"), e.querySelectorAll(":checked").length || F.push(":checked")
			}), i(function(e) {
				var t = n.createElement("input");
				t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && F.push("name" + rt + "*[*^$|!~]?="), e.querySelectorAll(":enabled").length || F.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), F.push(",.*:")
			})), (w.matchesSelector = vt.test(M = H.matches || H.webkitMatchesSelector || H.mozMatchesSelector || H.oMatchesSelector || H.msMatchesSelector)) && i(function(e) {
				w.disconnectedMatch = M.call(e, "div"), M.call(e, "[s!='']:x"), P.push("!=", at)
			}), F = F.length && new RegExp(F.join("|")), P = P.length && new RegExp(P.join("|")), t = vt.test(H.compareDocumentPosition), R = t || vt.test(H.contains) ? function(e, t) {
				var n = 9 === e.nodeType ? e.documentElement : e,
					r = t && t.parentNode;
				return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
			} : function(e, t) {
				if (t) for (; t = t.parentNode;) if (t === e) return !0;
				return !1
			}, U = t ? function(e, t) {
				if (e === t) return A = !0, 0;
				var r = !e.compareDocumentPosition - !t.compareDocumentPosition;
				return r ? r : (r = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1, 1 & r || !w.sortDetached && t.compareDocumentPosition(e) === r ? e === n || e.ownerDocument === $ && R($, e) ? -1 : t === n || t.ownerDocument === $ && R($, t) ? 1 : D ? tt.call(D, e) - tt.call(D, t) : 0 : 4 & r ? -1 : 1)
			} : function(e, t) {
				if (e === t) return A = !0, 0;
				var r, i = 0,
					o = e.parentNode,
					a = t.parentNode,
					u = [e],
					l = [t];
				if (!o || !a) return e === n ? -1 : t === n ? 1 : o ? -1 : a ? 1 : D ? tt.call(D, e) - tt.call(D, t) : 0;
				if (o === a) return s(e, t);
				for (r = e; r = r.parentNode;) u.unshift(r);
				for (r = t; r = r.parentNode;) l.unshift(r);
				for (; u[i] === l[i];) i++;
				return i ? s(u[i], l[i]) : u[i] === $ ? -1 : l[i] === $ ? 1 : 0
			}, n) : q
		}, t.matches = function(e, n) {
			return t(e, null, null, n)
		}, t.matchesSelector = function(e, n) {
			if ((e.ownerDocument || e) !== q && L(e), n = n.replace(ft, "='$1']"), !(!w.matchesSelector || !O || P && P.test(n) || F && F.test(n))) try {
				var r = M.call(e, n);
				if (r || w.disconnectedMatch || e.document && 11 !== e.document.nodeType) return r
			} catch (i) {}
			return t(n, q, null, [e]).length > 0
		}, t.contains = function(e, t) {
			return (e.ownerDocument || e) !== q && L(e), R(e, t)
		}, t.attr = function(e, t) {
			(e.ownerDocument || e) !== q && L(e);
			var n = T.attrHandle[t.toLowerCase()],
				r = n && G.call(T.attrHandle, t.toLowerCase()) ? n(e, t, !O) : void 0;
			return void 0 !== r ? r : w.attributes || !O ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
		}, t.error = function(e) {
			throw new Error("Syntax error, unrecognized expression: " + e)
		}, t.uniqueSort = function(e) {
			var t, n = [],
				r = 0,
				i = 0;
			if (A = !w.detectDuplicates, D = !w.sortStable && e.slice(0), e.sort(U), A) {
				for (; t = e[i++];) t === e[i] && (r = n.push(i));
				for (; r--;) e.splice(n[r], 1)
			}
			return D = null, e
		}, C = t.getText = function(e) {
			var t, n = "",
				r = 0,
				i = e.nodeType;
			if (i) {
				if (1 === i || 9 === i || 11 === i) {
					if ("string" == typeof e.textContent) return e.textContent;
					for (e = e.firstChild; e; e = e.nextSibling) n += C(e)
				} else if (3 === i || 4 === i) return e.nodeValue
			} else for (; t = e[r++];) n += C(t);
			return n
		}, T = t.selectors = {
			cacheLength: 50,
			createPseudo: r,
			match: ht,
			attrHandle: {},
			find: {},
			relative: {
				">": {
					dir: "parentNode",
					first: !0
				},
				" ": {
					dir: "parentNode"
				},
				"+": {
					dir: "previousSibling",
					first: !0
				},
				"~": {
					dir: "previousSibling"
				}
			},
			preFilter: {
				ATTR: function(e) {
					return e[1] = e[1].replace(wt, Tt), e[3] = (e[3] || e[4] || e[5] || "").replace(wt, Tt), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
				},
				CHILD: function(e) {
					return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || t.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && t.error(e[0]), e
				},
				PSEUDO: function(e) {
					var t, n = !e[6] && e[2];
					return ht.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && pt.test(n) && (t = k(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3))
				}
			},
			filter: {
				TAG: function(e) {
					var t = e.replace(wt, Tt).toLowerCase();
					return "*" === e ? function() {
						return !0
					} : function(e) {
						return e.nodeName && e.nodeName.toLowerCase() === t
					}
				},
				CLASS: function(e) {
					var t = _[e + " "];
					return t || (t = new RegExp("(^|" + rt + ")" + e + "(" + rt + "|$)")) && _(e, function(e) {
						return t.test("string" == typeof e.className && e.className || typeof e.getAttribute !== V && e.getAttribute("class") || "")
					})
				},
				ATTR: function(e, n, r) {
					return function(i) {
						var o = t.attr(i, e);
						return null == o ? "!=" === n : n ? (o += "", "=" === n ? o === r : "!=" === n ? o !== r : "^=" === n ? r && 0 === o.indexOf(r) : "*=" === n ? r && o.indexOf(r) > -1 : "$=" === n ? r && o.slice(-r.length) === r : "~=" === n ? (" " + o + " ").indexOf(r) > -1 : "|=" === n ? o === r || o.slice(0, r.length + 1) === r + "-" : !1) : !0
					}
				},
				CHILD: function(e, t, n, r, i) {
					var o = "nth" !== e.slice(0, 3),
						s = "last" !== e.slice(-4),
						a = "of-type" === t;
					return 1 === r && 0 === i ? function(e) {
						return !!e.parentNode
					} : function(t, n, u) {
						var l, c, f, p, d, h, g = o !== s ? "nextSibling" : "previousSibling",
							m = t.parentNode,
							v = a && t.nodeName.toLowerCase(),
							y = !u && !a;
						if (m) {
							if (o) {
								for (; g;) {
									for (f = t; f = f[g];) if (a ? f.nodeName.toLowerCase() === v : 1 === f.nodeType) return !1;
									h = g = "only" === e && !h && "nextSibling"
								}
								return !0
							}
							if (h = [s ? m.firstChild : m.lastChild], s && y) {
								for (c = m[W] || (m[W] = {}), l = c[e] || [], d = l[0] === B && l[1], p = l[0] === B && l[2], f = d && m.childNodes[d]; f = ++d && f && f[g] || (p = d = 0) || h.pop();) if (1 === f.nodeType && ++p && f === t) {
									c[e] = [B, d, p];
									break
								}
							} else if (y && (l = (t[W] || (t[W] = {}))[e]) && l[0] === B) p = l[1];
							else for (;
							(f = ++d && f && f[g] || (p = d = 0) || h.pop()) && ((a ? f.nodeName.toLowerCase() !== v : 1 !== f.nodeType) || !++p || (y && ((f[W] || (f[W] = {}))[e] = [B, p]), f !== t)););
							return p -= i, p === r || p % r === 0 && p / r >= 0
						}
					}
				},
				PSEUDO: function(e, n) {
					var i, o = T.pseudos[e] || T.setFilters[e.toLowerCase()] || t.error("unsupported pseudo: " + e);
					return o[W] ? o(n) : o.length > 1 ? (i = [e, e, "", n], T.setFilters.hasOwnProperty(e.toLowerCase()) ? r(function(e, t) {
						for (var r, i = o(e, n), s = i.length; s--;) r = tt.call(e, i[s]), e[r] = !(t[r] = i[s])
					}) : function(e) {
						return o(e, 0, i)
					}) : o
				}
			},
			pseudos: {
				not: r(function(e) {
					var t = [],
						n = [],
						i = E(e.replace(ut, "$1"));
					return i[W] ? r(function(e, t, n, r) {
						for (var o, s = i(e, null, r, []), a = e.length; a--;)(o = s[a]) && (e[a] = !(t[a] = o))
					}) : function(e, r, o) {
						return t[0] = e, i(t, null, o, n), !n.pop()
					}
				}),
				has: r(function(e) {
					return function(n) {
						return t(e, n).length > 0
					}
				}),
				contains: r(function(e) {
					return function(t) {
						return (t.textContent || t.innerText || C(t)).indexOf(e) > -1
					}
				}),
				lang: r(function(e) {
					return dt.test(e || "") || t.error("unsupported lang: " + e), e = e.replace(wt, Tt).toLowerCase(),
					function(t) {
						var n;
						do if (n = O ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return n = n.toLowerCase(), n === e || 0 === n.indexOf(e + "-");
						while ((t = t.parentNode) && 1 === t.nodeType);
						return !1
					}
				}),
				target: function(t) {
					var n = e.location && e.location.hash;
					return n && n.slice(1) === t.id
				},
				root: function(e) {
					return e === H
				},
				focus: function(e) {
					return e === q.activeElement && (!q.hasFocus || q.hasFocus()) && !! (e.type || e.href || ~e.tabIndex)
				},
				enabled: function(e) {
					return e.disabled === !1
				},
				disabled: function(e) {
					return e.disabled === !0
				},
				checked: function(e) {
					var t = e.nodeName.toLowerCase();
					return "input" === t && !! e.checked || "option" === t && !! e.selected
				},
				selected: function(e) {
					return e.parentNode && e.parentNode.selectedIndex, e.selected === !0
				},
				empty: function(e) {
					for (e = e.firstChild; e; e = e.nextSibling) if (e.nodeType < 6) return !1;
					return !0
				},
				parent: function(e) {
					return !T.pseudos.empty(e)
				},
				header: function(e) {
					return mt.test(e.nodeName)
				},
				input: function(e) {
					return gt.test(e.nodeName)
				},
				button: function(e) {
					var t = e.nodeName.toLowerCase();
					return "input" === t && "button" === e.type || "button" === t
				},
				text: function(e) {
					var t;
					return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
				},
				first: l(function() {
					return [0]
				}),
				last: l(function(e, t) {
					return [t - 1]
				}),
				eq: l(function(e, t, n) {
					return [0 > n ? n + t : n]
				}),
				even: l(function(e, t) {
					for (var n = 0; t > n; n += 2) e.push(n);
					return e
				}),
				odd: l(function(e, t) {
					for (var n = 1; t > n; n += 2) e.push(n);
					return e
				}),
				lt: l(function(e, t, n) {
					for (var r = 0 > n ? n + t : n; --r >= 0;) e.push(r);
					return e
				}),
				gt: l(function(e, t, n) {
					for (var r = 0 > n ? n + t : n; ++r < t;) e.push(r);
					return e
				})
			}
		}, T.pseudos.nth = T.pseudos.eq;
		for (b in {
			radio: !0,
			checkbox: !0,
			file: !0,
			password: !0,
			image: !0
		}) T.pseudos[b] = a(b);
		for (b in {
			submit: !0,
			reset: !0
		}) T.pseudos[b] = u(b);
		return f.prototype = T.filters = T.pseudos, T.setFilters = new f, k = t.tokenize = function(e, n) {
			var r, i, o, s, a, u, l, c = z[e + " "];
			if (c) return n ? 0 : c.slice(0);
			for (a = e, u = [], l = T.preFilter; a;) {
				(!r || (i = lt.exec(a))) && (i && (a = a.slice(i[0].length) || a), u.push(o = [])), r = !1, (i = ct.exec(a)) && (r = i.shift(), o.push({
					value: r,
					type: i[0].replace(ut, " ")
				}), a = a.slice(r.length));
				for (s in T.filter)!(i = ht[s].exec(a)) || l[s] && !(i = l[s](i)) || (r = i.shift(), o.push({
					value: r,
					type: s,
					matches: i
				}), a = a.slice(r.length));
				if (!r) break
			}
			return n ? a.length : a ? t.error(e) : z(e, u).slice(0)
		}, E = t.compile = function(e, t) {
			var n, r = [],
				i = [],
				o = X[e + " "];
			if (!o) {
				for (t || (t = k(e)), n = t.length; n--;) o = y(t[n]), o[W] ? r.push(o) : i.push(o);
				o = X(e, x(i, r)), o.selector = e
			}
			return o
		}, S = t.select = function(e, t, n, r) {
			var i, o, s, a, u, l = "function" == typeof e && e,
				f = !r && k(e = l.selector || e);
			if (n = n || [], 1 === f.length) {
				if (o = f[0] = f[0].slice(0), o.length > 2 && "ID" === (s = o[0]).type && w.getById && 9 === t.nodeType && O && T.relative[o[1].type]) {
					if (t = (T.find.ID(s.matches[0].replace(wt, Tt), t) || [])[0], !t) return n;
					l && (t = t.parentNode), e = e.slice(o.shift().value.length)
				}
				for (i = ht.needsContext.test(e) ? 0 : o.length; i-- && (s = o[i], !T.relative[a = s.type]);) if ((u = T.find[a]) && (r = u(s.matches[0].replace(wt, Tt), xt.test(o[0].type) && c(t.parentNode) || t))) {
					if (o.splice(i, 1), e = r.length && p(o), !e) return Z.apply(n, r), n;
					break
				}
			}
			return (l || E(e, f))(r, t, !O, n, xt.test(e) && c(t.parentNode) || t), n
		}, w.sortStable = W.split("").sort(U).join("") === W, w.detectDuplicates = !! A, L(), w.sortDetached = i(function(e) {
			return 1 & e.compareDocumentPosition(q.createElement("div"))
		}), i(function(e) {
			return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
		}) || o("type|href|height|width", function(e, t, n) {
			return n ? void 0 : e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
		}), w.attributes && i(function(e) {
			return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
		}) || o("value", function(e, t, n) {
			return n || "input" !== e.nodeName.toLowerCase() ? void 0 : e.defaultValue
		}), i(function(e) {
			return null == e.getAttribute("disabled")
		}) || o(nt, function(e, t, n) {
			var r;
			return n ? void 0 : e[t] === !0 ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
		}), t
	}(e);
	Z.find = it, Z.expr = it.selectors, Z.expr[":"] = Z.expr.pseudos, Z.unique = it.uniqueSort, Z.text = it.getText, Z.isXMLDoc = it.isXML, Z.contains = it.contains;
	var ot = Z.expr.match.needsContext,
		st = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
		at = /^.[^:#\[\.,]*$/;
	Z.filter = function(e, t, n) {
		var r = t[0];
		return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? Z.find.matchesSelector(r, e) ? [r] : [] : Z.find.matches(e, Z.grep(t, function(e) {
			return 1 === e.nodeType
		}))
	}, Z.fn.extend({
		find: function(e) {
			var t, n = this.length,
				r = [],
				i = this;
			if ("string" != typeof e) return this.pushStack(Z(e).filter(function() {
				for (t = 0; n > t; t++) if (Z.contains(i[t], this)) return !0
			}));
			for (t = 0; n > t; t++) Z.find(e, i[t], r);
			return r = this.pushStack(n > 1 ? Z.unique(r) : r), r.selector = this.selector ? this.selector + " " + e : e, r
		},
		filter: function(e) {
			return this.pushStack(r(this, e || [], !1))
		},
		not: function(e) {
			return this.pushStack(r(this, e || [], !0))
		},
		is: function(e) {
			return !!r(this, "string" == typeof e && ot.test(e) ? Z(e) : e || [], !1).length
		}
	});
	var ut, lt = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
		ct = Z.fn.init = function(e, t) {
			var n, r;
			if (!e) return this;
			if ("string" == typeof e) {
				if (n = "<" === e[0] && ">" === e[e.length - 1] && e.length >= 3 ? [null, e, null] : lt.exec(e), !n || !n[1] && t) return !t || t.jquery ? (t || ut).find(e) : this.constructor(t).find(e);
				if (n[1]) {
					if (t = t instanceof Z ? t[0] : t, Z.merge(this, Z.parseHTML(n[1], t && t.nodeType ? t.ownerDocument || t : J, !0)), st.test(n[1]) && Z.isPlainObject(t)) for (n in t) Z.isFunction(this[n]) ? this[n](t[n]) : this.attr(n, t[n]);
					return this
				}
				return r = J.getElementById(n[2]), r && r.parentNode && (this.length = 1, this[0] = r), this.context = J, this.selector = e, this
			}
			return e.nodeType ? (this.context = this[0] = e, this.length = 1, this) : Z.isFunction(e) ? "undefined" != typeof ut.ready ? ut.ready(e) : e(Z) : (void 0 !== e.selector && (this.selector = e.selector, this.context = e.context), Z.makeArray(e, this))
		};
	ct.prototype = Z.fn, ut = Z(J);
	var ft = /^(?:parents|prev(?:Until|All))/,
		pt = {
			children: !0,
			contents: !0,
			next: !0,
			prev: !0
		};
	Z.extend({
		dir: function(e, t, n) {
			for (var r = [], i = void 0 !== n;
			(e = e[t]) && 9 !== e.nodeType;) if (1 === e.nodeType) {
				if (i && Z(e).is(n)) break;
				r.push(e)
			}
			return r
		},
		sibling: function(e, t) {
			for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
			return n
		}
	}), Z.fn.extend({
		has: function(e) {
			var t = Z(e, this),
				n = t.length;
			return this.filter(function() {
				for (var e = 0; n > e; e++) if (Z.contains(this, t[e])) return !0
			})
		},
		closest: function(e, t) {
			for (var n, r = 0, i = this.length, o = [], s = ot.test(e) || "string" != typeof e ? Z(e, t || this.context) : 0; i > r; r++) for (n = this[r]; n && n !== t; n = n.parentNode) if (n.nodeType < 11 && (s ? s.index(n) > -1 : 1 === n.nodeType && Z.find.matchesSelector(n, e))) {
				o.push(n);
				break
			}
			return this.pushStack(o.length > 1 ? Z.unique(o) : o)
		},
		index: function(e) {
			return e ? "string" == typeof e ? U.call(Z(e), this[0]) : U.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
		},
		add: function(e, t) {
			return this.pushStack(Z.unique(Z.merge(this.get(), Z(e, t))))
		},
		addBack: function(e) {
			return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
		}
	}), Z.each({
		parent: function(e) {
			var t = e.parentNode;
			return t && 11 !== t.nodeType ? t : null
		},
		parents: function(e) {
			return Z.dir(e, "parentNode")
		},
		parentsUntil: function(e, t, n) {
			return Z.dir(e, "parentNode", n)
		},
		next: function(e) {
			return i(e, "nextSibling")
		},
		prev: function(e) {
			return i(e, "previousSibling")
		},
		nextAll: function(e) {
			return Z.dir(e, "nextSibling")
		},
		prevAll: function(e) {
			return Z.dir(e, "previousSibling")
		},
		nextUntil: function(e, t, n) {
			return Z.dir(e, "nextSibling", n)
		},
		prevUntil: function(e, t, n) {
			return Z.dir(e, "previousSibling", n)
		},
		siblings: function(e) {
			return Z.sibling((e.parentNode || {}).firstChild, e)
		},
		children: function(e) {
			return Z.sibling(e.firstChild)
		},
		contents: function(e) {
			return e.contentDocument || Z.merge([], e.childNodes)
		}
	}, function(e, t) {
		Z.fn[e] = function(n, r) {
			var i = Z.map(this, t, n);
			return "Until" !== e.slice(-5) && (r = n), r && "string" == typeof r && (i = Z.filter(r, i)), this.length > 1 && (pt[e] || Z.unique(i), ft.test(e) && i.reverse()), this.pushStack(i)
		}
	});
	var dt = /\S+/g,
		ht = {};
	Z.Callbacks = function(e) {
		e = "string" == typeof e ? ht[e] || o(e) : Z.extend({}, e);
		var t, n, r, i, s, a, u = [],
			l = !e.once && [],
			c = function(o) {
				for (t = e.memory && o, n = !0, a = i || 0, i = 0, s = u.length, r = !0; u && s > a; a++) if (u[a].apply(o[0], o[1]) === !1 && e.stopOnFalse) {
					t = !1;
					break
				}
				r = !1, u && (l ? l.length && c(l.shift()) : t ? u = [] : f.disable())
			}, f = {
				add: function() {
					if (u) {
						var n = u.length;
						! function o(t) {
							Z.each(t, function(t, n) {
								var r = Z.type(n);
								"function" === r ? e.unique && f.has(n) || u.push(n) : n && n.length && "string" !== r && o(n)
							})
						}(arguments), r ? s = u.length : t && (i = n, c(t))
					}
					return this
				},
				remove: function() {
					return u && Z.each(arguments, function(e, t) {
						for (var n;
						(n = Z.inArray(t, u, n)) > -1;) u.splice(n, 1), r && (s >= n && s--, a >= n && a--)
					}), this
				},
				has: function(e) {
					return e ? Z.inArray(e, u) > -1 : !(!u || !u.length)
				},
				empty: function() {
					return u = [], s = 0, this
				},
				disable: function() {
					return u = l = t = void 0, this
				},
				disabled: function() {
					return !u
				},
				lock: function() {
					return l = void 0, t || f.disable(), this
				},
				locked: function() {
					return !l
				},
				fireWith: function(e, t) {
					return !u || n && !l || (t = t || [], t = [e, t.slice ? t.slice() : t], r ? l.push(t) : c(t)), this
				},
				fire: function() {
					return f.fireWith(this, arguments), this
				},
				fired: function() {
					return !!n
				}
			};
		return f
	}, Z.extend({
		Deferred: function(e) {
			var t = [
				["resolve", "done", Z.Callbacks("once memory"), "resolved"],
				["reject", "fail", Z.Callbacks("once memory"), "rejected"],
				["notify", "progress", Z.Callbacks("memory")]
			],
				n = "pending",
				r = {
					state: function() {
						return n
					},
					always: function() {
						return i.done(arguments).fail(arguments), this
					},
					then: function() {
						var e = arguments;
						return Z.Deferred(function(n) {
							Z.each(t, function(t, o) {
								var s = Z.isFunction(e[t]) && e[t];
								i[o[1]](function() {
									var e = s && s.apply(this, arguments);
									e && Z.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[o[0] + "With"](this === r ? n.promise() : this, s ? [e] : arguments)
								})
							}), e = null
						}).promise()
					},
					promise: function(e) {
						return null != e ? Z.extend(e, r) : r
					}
				}, i = {};
			return r.pipe = r.then, Z.each(t, function(e, o) {
				var s = o[2],
					a = o[3];
				r[o[1]] = s.add, a && s.add(function() {
					n = a
				}, t[1 ^ e][2].disable, t[2][2].lock), i[o[0]] = function() {
					return i[o[0] + "With"](this === i ? r : this, arguments), this
				}, i[o[0] + "With"] = s.fireWith
			}), r.promise(i), e && e.call(i, i), i
		},
		when: function(e) {
			var t, n, r, i = 0,
				o = _.call(arguments),
				s = o.length,
				a = 1 !== s || e && Z.isFunction(e.promise) ? s : 0,
				u = 1 === a ? e : Z.Deferred(),
				l = function(e, n, r) {
					return function(i) {
						n[e] = this, r[e] = arguments.length > 1 ? _.call(arguments) : i, r === t ? u.notifyWith(n, r) : --a || u.resolveWith(n, r)
					}
				};
			if (s > 1) for (t = new Array(s), n = new Array(s), r = new Array(s); s > i; i++) o[i] && Z.isFunction(o[i].promise) ? o[i].promise().done(l(i, r, o)).fail(u.reject).progress(l(i, n, t)) : --a;
			return a || u.resolveWith(r, o), u.promise()
		}
	});
	var gt;
	Z.fn.ready = function(e) {
		return Z.ready.promise().done(e), this
	}, Z.extend({
		isReady: !1,
		readyWait: 1,
		holdReady: function(e) {
			e ? Z.readyWait++ : Z.ready(!0)
		},
		ready: function(e) {
			(e === !0 ? --Z.readyWait : Z.isReady) || (Z.isReady = !0, e !== !0 && --Z.readyWait > 0 || (gt.resolveWith(J, [Z]), Z.fn.triggerHandler && (Z(J).triggerHandler("ready"), Z(J).off("ready"))))
		}
	}), Z.ready.promise = function(t) {
		return gt || (gt = Z.Deferred(), "complete" === J.readyState ? setTimeout(Z.ready) : (J.addEventListener("DOMContentLoaded", s, !1), e.addEventListener("load", s, !1))), gt.promise(t)
	}, Z.ready.promise();
	var mt = Z.access = function(e, t, n, r, i, o, s) {
		var a = 0,
			u = e.length,
			l = null == n;
		if ("object" === Z.type(n)) {
			i = !0;
			for (a in n) Z.access(e, t, a, n[a], !0, o, s)
		} else if (void 0 !== r && (i = !0, Z.isFunction(r) || (s = !0), l && (s ? (t.call(e, r), t = null) : (l = t, t = function(e, t, n) {
			return l.call(Z(e), n)
		})), t)) for (; u > a; a++) t(e[a], n, s ? r : r.call(e[a], a, t(e[a], n)));
		return i ? e : l ? t.call(e) : u ? t(e[0], n) : o
	};
	Z.acceptData = function(e) {
		return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
	}, a.uid = 1, a.accepts = Z.acceptData, a.prototype = {
		key: function(e) {
			if (!a.accepts(e)) return 0;
			var t = {}, n = e[this.expando];
			if (!n) {
				n = a.uid++;
				try {
					t[this.expando] = {
						value: n
					}, Object.defineProperties(e, t)
				} catch (r) {
					t[this.expando] = n, Z.extend(e, t)
				}
			}
			return this.cache[n] || (this.cache[n] = {}), n
		},
		set: function(e, t, n) {
			var r, i = this.key(e),
				o = this.cache[i];
			if ("string" == typeof t) o[t] = n;
			else if (Z.isEmptyObject(o)) Z.extend(this.cache[i], t);
			else for (r in t) o[r] = t[r];
			return o
		},
		get: function(e, t) {
			var n = this.cache[this.key(e)];
			return void 0 === t ? n : n[t]
		},
		access: function(e, t, n) {
			var r;
			return void 0 === t || t && "string" == typeof t && void 0 === n ? (r = this.get(e, t), void 0 !== r ? r : this.get(e, Z.camelCase(t))) : (this.set(e, t, n), void 0 !== n ? n : t)
		},
		remove: function(e, t) {
			var n, r, i, o = this.key(e),
				s = this.cache[o];
			if (void 0 === t) this.cache[o] = {};
			else {
				Z.isArray(t) ? r = t.concat(t.map(Z.camelCase)) : (i = Z.camelCase(t), t in s ? r = [t, i] : (r = i, r = r in s ? [r] : r.match(dt) || [])), n = r.length;
				for (; n--;) delete s[r[n]]
			}
		},
		hasData: function(e) {
			return !Z.isEmptyObject(this.cache[e[this.expando]] || {})
		},
		discard: function(e) {
			e[this.expando] && delete this.cache[e[this.expando]]
		}
	};
	var vt = new a,
		yt = new a,
		xt = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
		bt = /([A-Z])/g;
	Z.extend({
		hasData: function(e) {
			return yt.hasData(e) || vt.hasData(e)
		},
		data: function(e, t, n) {
			return yt.access(e, t, n)
		},
		removeData: function(e, t) {
			yt.remove(e, t)
		},
		_data: function(e, t, n) {
			return vt.access(e, t, n)
		},
		_removeData: function(e, t) {
			vt.remove(e, t)
		}
	}), Z.fn.extend({
		data: function(e, t) {
			var n, r, i, o = this[0],
				s = o && o.attributes;
			if (void 0 === e) {
				if (this.length && (i = yt.get(o), 1 === o.nodeType && !vt.get(o, "hasDataAttrs"))) {
					for (n = s.length; n--;) s[n] && (r = s[n].name, 0 === r.indexOf("data-") && (r = Z.camelCase(r.slice(5)), u(o, r, i[r])));
					vt.set(o, "hasDataAttrs", !0)
				}
				return i
			}
			return "object" == typeof e ? this.each(function() {
				yt.set(this, e)
			}) : mt(this, function(t) {
				var n, r = Z.camelCase(e);
				if (o && void 0 === t) {
					if (n = yt.get(o, e), void 0 !== n) return n;
					if (n = yt.get(o, r), void 0 !== n) return n;
					if (n = u(o, r, void 0), void 0 !== n) return n
				} else this.each(function() {
					var n = yt.get(this, r);
					yt.set(this, r, t), -1 !== e.indexOf("-") && void 0 !== n && yt.set(this, e, t)
				})
			}, null, t, arguments.length > 1, null, !0)
		},
		removeData: function(e) {
			return this.each(function() {
				yt.remove(this, e)
			})
		}
	}), Z.extend({
		queue: function(e, t, n) {
			var r;
			return e ? (t = (t || "fx") + "queue", r = vt.get(e, t), n && (!r || Z.isArray(n) ? r = vt.access(e, t, Z.makeArray(n)) : r.push(n)), r || []) : void 0
		},
		dequeue: function(e, t) {
			t = t || "fx";
			var n = Z.queue(e, t),
				r = n.length,
				i = n.shift(),
				o = Z._queueHooks(e, t),
				s = function() {
					Z.dequeue(e, t)
				};
			"inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, s, o)), !r && o && o.empty.fire()
		},
		_queueHooks: function(e, t) {
			var n = t + "queueHooks";
			return vt.get(e, n) || vt.access(e, n, {
				empty: Z.Callbacks("once memory").add(function() {
					vt.remove(e, [t + "queue", n])
				})
			})
		}
	}), Z.fn.extend({
		queue: function(e, t) {
			var n = 2;
			return "string" != typeof e && (t = e, e = "fx", n--), arguments.length < n ? Z.queue(this[0], e) : void 0 === t ? this : this.each(function() {
				var n = Z.queue(this, e, t);
				Z._queueHooks(this, e), "fx" === e && "inprogress" !== n[0] && Z.dequeue(this, e)
			})
		},
		dequeue: function(e) {
			return this.each(function() {
				Z.dequeue(this, e)
			})
		},
		clearQueue: function(e) {
			return this.queue(e || "fx", [])
		},
		promise: function(e, t) {
			var n, r = 1,
				i = Z.Deferred(),
				o = this,
				s = this.length,
				a = function() {
					--r || i.resolveWith(o, [o])
				};
			for ("string" != typeof e && (t = e, e = void 0), e = e || "fx"; s--;) n = vt.get(o[s], e + "queueHooks"), n && n.empty && (r++, n.empty.add(a));
			return a(), i.promise(t)
		}
	});
	var wt = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
		Tt = ["Top", "Right", "Bottom", "Left"],
		Ct = function(e, t) {
			return e = t || e, "none" === Z.css(e, "display") || !Z.contains(e.ownerDocument, e)
		}, Nt = /^(?:checkbox|radio)$/i;
	! function() {
		var e = J.createDocumentFragment(),
			t = e.appendChild(J.createElement("div")),
			n = J.createElement("input");
		n.setAttribute("type", "radio"), n.setAttribute("checked", "checked"), n.setAttribute("name", "t"), t.appendChild(n), Q.checkClone = t.cloneNode(!0).cloneNode(!0).lastChild.checked, t.innerHTML = "<textarea>x</textarea>", Q.noCloneChecked = !! t.cloneNode(!0).lastChild.defaultValue
	}();
	var kt = "undefined";
	Q.focusinBubbles = "onfocusin" in e;
	var Et = /^key/,
		St = /^(?:mouse|pointer|contextmenu)|click/,
		jt = /^(?:focusinfocus|focusoutblur)$/,
		Dt = /^([^.]*)(?:\.(.+)|)$/;
	Z.event = {
		global: {},
		add: function(e, t, n, r, i) {
			var o, s, a, u, l, c, f, p, d, h, g, m = vt.get(e);
			if (m) for (n.handler && (o = n, n = o.handler, i = o.selector), n.guid || (n.guid = Z.guid++), (u = m.events) || (u = m.events = {}), (s = m.handle) || (s = m.handle = function(t) {
				return typeof Z !== kt && Z.event.triggered !== t.type ? Z.event.dispatch.apply(e, arguments) : void 0
			}), t = (t || "").match(dt) || [""], l = t.length; l--;) a = Dt.exec(t[l]) || [], d = g = a[1], h = (a[2] || "").split(".").sort(), d && (f = Z.event.special[d] || {}, d = (i ? f.delegateType : f.bindType) || d, f = Z.event.special[d] || {}, c = Z.extend({
				type: d,
				origType: g,
				data: r,
				handler: n,
				guid: n.guid,
				selector: i,
				needsContext: i && Z.expr.match.needsContext.test(i),
				namespace: h.join(".")
			}, o), (p = u[d]) || (p = u[d] = [], p.delegateCount = 0, f.setup && f.setup.call(e, r, h, s) !== !1 || e.addEventListener && e.addEventListener(d, s, !1)), f.add && (f.add.call(e, c), c.handler.guid || (c.handler.guid = n.guid)), i ? p.splice(p.delegateCount++, 0, c) : p.push(c), Z.event.global[d] = !0)
		},
		remove: function(e, t, n, r, i) {
			var o, s, a, u, l, c, f, p, d, h, g, m = vt.hasData(e) && vt.get(e);
			if (m && (u = m.events)) {
				for (t = (t || "").match(dt) || [""], l = t.length; l--;) if (a = Dt.exec(t[l]) || [], d = g = a[1], h = (a[2] || "").split(".").sort(), d) {
					for (f = Z.event.special[d] || {}, d = (r ? f.delegateType : f.bindType) || d, p = u[d] || [], a = a[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), s = o = p.length; o--;) c = p[o], !i && g !== c.origType || n && n.guid !== c.guid || a && !a.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (p.splice(o, 1), c.selector && p.delegateCount--, f.remove && f.remove.call(e, c));
					s && !p.length && (f.teardown && f.teardown.call(e, h, m.handle) !== !1 || Z.removeEvent(e, d, m.handle), delete u[d])
				} else for (d in u) Z.event.remove(e, d + t[l], n, r, !0);
				Z.isEmptyObject(u) && (delete m.handle, vt.remove(e, "events"))
			}
		},
		trigger: function(t, n, r, i) {
			var o, s, a, u, l, c, f, p = [r || J],
				d = G.call(t, "type") ? t.type : t,
				h = G.call(t, "namespace") ? t.namespace.split(".") : [];
			if (s = a = r = r || J, 3 !== r.nodeType && 8 !== r.nodeType && !jt.test(d + Z.event.triggered) && (d.indexOf(".") >= 0 && (h = d.split("."), d = h.shift(), h.sort()), l = d.indexOf(":") < 0 && "on" + d, t = t[Z.expando] ? t : new Z.Event(d, "object" == typeof t && t), t.isTrigger = i ? 2 : 3, t.namespace = h.join("."), t.namespace_re = t.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, t.result = void 0, t.target || (t.target = r), n = null == n ? [t] : Z.makeArray(n, [t]), f = Z.event.special[d] || {}, i || !f.trigger || f.trigger.apply(r, n) !== !1)) {
				if (!i && !f.noBubble && !Z.isWindow(r)) {
					for (u = f.delegateType || d, jt.test(u + d) || (s = s.parentNode); s; s = s.parentNode) p.push(s), a = s;
					a === (r.ownerDocument || J) && p.push(a.defaultView || a.parentWindow || e)
				}
				for (o = 0;
				(s = p[o++]) && !t.isPropagationStopped();) t.type = o > 1 ? u : f.bindType || d, c = (vt.get(s, "events") || {})[t.type] && vt.get(s, "handle"), c && c.apply(s, n), c = l && s[l], c && c.apply && Z.acceptData(s) && (t.result = c.apply(s, n), t.result === !1 && t.preventDefault());
				return t.type = d, i || t.isDefaultPrevented() || f._default && f._default.apply(p.pop(), n) !== !1 || !Z.acceptData(r) || l && Z.isFunction(r[d]) && !Z.isWindow(r) && (a = r[l], a && (r[l] = null), Z.event.triggered = d, r[d](), Z.event.triggered = void 0, a && (r[l] = a)), t.result
			}
		},
		dispatch: function(e) {
			e = Z.event.fix(e);
			var t, n, r, i, o, s = [],
				a = _.call(arguments),
				u = (vt.get(this, "events") || {})[e.type] || [],
				l = Z.event.special[e.type] || {};
			if (a[0] = e, e.delegateTarget = this, !l.preDispatch || l.preDispatch.call(this, e) !== !1) {
				for (s = Z.event.handlers.call(this, e, u), t = 0;
				(i = s[t++]) && !e.isPropagationStopped();) for (e.currentTarget = i.elem, n = 0;
				(o = i.handlers[n++]) && !e.isImmediatePropagationStopped();)(!e.namespace_re || e.namespace_re.test(o.namespace)) && (e.handleObj = o, e.data = o.data, r = ((Z.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, a), void 0 !== r && (e.result = r) === !1 && (e.preventDefault(), e.stopPropagation()));
				return l.postDispatch && l.postDispatch.call(this, e), e.result
			}
		},
		handlers: function(e, t) {
			var n, r, i, o, s = [],
				a = t.delegateCount,
				u = e.target;
			if (a && u.nodeType && (!e.button || "click" !== e.type)) for (; u !== this; u = u.parentNode || this) if (u.disabled !== !0 || "click" !== e.type) {
				for (r = [], n = 0; a > n; n++) o = t[n], i = o.selector + " ", void 0 === r[i] && (r[i] = o.needsContext ? Z(i, this).index(u) >= 0 : Z.find(i, this, null, [u]).length), r[i] && r.push(o);
				r.length && s.push({
					elem: u,
					handlers: r
				})
			}
			return a < t.length && s.push({
				elem: this,
				handlers: t.slice(a)
			}), s
		},
		props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
		fixHooks: {},
		keyHooks: {
			props: "char charCode key keyCode".split(" "),
			filter: function(e, t) {
				return null == e.which && (e.which = null != t.charCode ? t.charCode : t.keyCode), e
			}
		},
		mouseHooks: {
			props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
			filter: function(e, t) {
				var n, r, i, o = t.button;
				return null == e.pageX && null != t.clientX && (n = e.target.ownerDocument || J, r = n.documentElement, i = n.body, e.pageX = t.clientX + (r && r.scrollLeft || i && i.scrollLeft || 0) - (r && r.clientLeft || i && i.clientLeft || 0), e.pageY = t.clientY + (r && r.scrollTop || i && i.scrollTop || 0) - (r && r.clientTop || i && i.clientTop || 0)), e.which || void 0 === o || (e.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0), e
			}
		},
		fix: function(e) {
			if (e[Z.expando]) return e;
			var t, n, r, i = e.type,
				o = e,
				s = this.fixHooks[i];
			for (s || (this.fixHooks[i] = s = St.test(i) ? this.mouseHooks : Et.test(i) ? this.keyHooks : {}), r = s.props ? this.props.concat(s.props) : this.props, e = new Z.Event(o), t = r.length; t--;) n = r[t], e[n] = o[n];
			return e.target || (e.target = J), 3 === e.target.nodeType && (e.target = e.target.parentNode), s.filter ? s.filter(e, o) : e
		},
		special: {
			load: {
				noBubble: !0
			},
			focus: {
				trigger: function() {
					return this !== f() && this.focus ? (this.focus(), !1) : void 0
				},
				delegateType: "focusin"
			},
			blur: {
				trigger: function() {
					return this === f() && this.blur ? (this.blur(), !1) : void 0
				},
				delegateType: "focusout"
			},
			click: {
				trigger: function() {
					return "checkbox" === this.type && this.click && Z.nodeName(this, "input") ? (this.click(), !1) : void 0
				},
				_default: function(e) {
					return Z.nodeName(e.target, "a")
				}
			},
			beforeunload: {
				postDispatch: function(e) {
					void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
				}
			}
		},
		simulate: function(e, t, n, r) {
			var i = Z.extend(new Z.Event, n, {
				type: e,
				isSimulated: !0,
				originalEvent: {}
			});
			r ? Z.event.trigger(i, null, t) : Z.event.dispatch.call(t, i), i.isDefaultPrevented() && n.preventDefault()
		}
	}, Z.removeEvent = function(e, t, n) {
		e.removeEventListener && e.removeEventListener(t, n, !1)
	}, Z.Event = function(e, t) {
		return this instanceof Z.Event ? (e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && e.returnValue === !1 ? l : c) : this.type = e, t && Z.extend(this, t), this.timeStamp = e && e.timeStamp || Z.now(), void(this[Z.expando] = !0)) : new Z.Event(e, t)
	}, Z.Event.prototype = {
		isDefaultPrevented: c,
		isPropagationStopped: c,
		isImmediatePropagationStopped: c,
		preventDefault: function() {
			var e = this.originalEvent;
			this.isDefaultPrevented = l, e && e.preventDefault && e.preventDefault()
		},
		stopPropagation: function() {
			var e = this.originalEvent;
			this.isPropagationStopped = l, e && e.stopPropagation && e.stopPropagation()
		},
		stopImmediatePropagation: function() {
			var e = this.originalEvent;
			this.isImmediatePropagationStopped = l, e && e.stopImmediatePropagation && e.stopImmediatePropagation(), this.stopPropagation()
		}
	}, Z.each({
		mouseenter: "mouseover",
		mouseleave: "mouseout",
		pointerenter: "pointerover",
		pointerleave: "pointerout"
	}, function(e, t) {
		Z.event.special[e] = {
			delegateType: t,
			bindType: t,
			handle: function(e) {
				var n, r = this,
					i = e.relatedTarget,
					o = e.handleObj;
				return (!i || i !== r && !Z.contains(r, i)) && (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t), n
			}
		}
	}), Q.focusinBubbles || Z.each({
		focus: "focusin",
		blur: "focusout"
	}, function(e, t) {
		var n = function(e) {
			Z.event.simulate(t, e.target, Z.event.fix(e), !0)
		};
		Z.event.special[t] = {
			setup: function() {
				var r = this.ownerDocument || this,
					i = vt.access(r, t);
				i || r.addEventListener(e, n, !0), vt.access(r, t, (i || 0) + 1)
			},
			teardown: function() {
				var r = this.ownerDocument || this,
					i = vt.access(r, t) - 1;
				i ? vt.access(r, t, i) : (r.removeEventListener(e, n, !0), vt.remove(r, t))
			}
		}
	}), Z.fn.extend({
		on: function(e, t, n, r, i) {
			var o, s;
			if ("object" == typeof e) {
				"string" != typeof t && (n = n || t, t = void 0);
				for (s in e) this.on(s, t, n, e[s], i);
				return this
			}
			if (null == n && null == r ? (r = t, n = t = void 0) : null == r && ("string" == typeof t ? (r = n, n = void 0) : (r = n, n = t, t = void 0)), r === !1) r = c;
			else if (!r) return this;
			return 1 === i && (o = r, r = function(e) {
				return Z().off(e), o.apply(this, arguments)
			}, r.guid = o.guid || (o.guid = Z.guid++)), this.each(function() {
				Z.event.add(this, e, r, n, t)
			})
		},
		one: function(e, t, n, r) {
			return this.on(e, t, n, r, 1)
		},
		off: function(e, t, n) {
			var r, i;
			if (e && e.preventDefault && e.handleObj) return r = e.handleObj, Z(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this;
			if ("object" == typeof e) {
				for (i in e) this.off(i, t, e[i]);
				return this
			}
			return (t === !1 || "function" == typeof t) && (n = t, t = void 0), n === !1 && (n = c), this.each(function() {
				Z.event.remove(this, e, n, t)
			})
		},
		trigger: function(e, t) {
			return this.each(function() {
				Z.event.trigger(e, t, this)
			})
		},
		triggerHandler: function(e, t) {
			var n = this[0];
			return n ? Z.event.trigger(e, t, n, !0) : void 0
		}
	});
	var At = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
		Lt = /<([\w:]+)/,
		qt = /<|&#?\w+;/,
		Ht = /<(?:script|style|link)/i,
		Ot = /checked\s*(?:[^=]|=\s*.checked.)/i,
		Ft = /^$|\/(?:java|ecma)script/i,
		Pt = /^true\/(.*)/,
		Mt = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
		Rt = {
			option: [1, "<select multiple='multiple'>", "</select>"],
			thead: [1, "<table>", "</table>"],
			col: [2, "<table><colgroup>", "</colgroup></table>"],
			tr: [2, "<table><tbody>", "</tbody></table>"],
			td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
			_default: [0, "", ""]
		};
	Rt.optgroup = Rt.option, Rt.tbody = Rt.tfoot = Rt.colgroup = Rt.caption = Rt.thead, Rt.th = Rt.td, Z.extend({
		clone: function(e, t, n) {
			var r, i, o, s, a = e.cloneNode(!0),
				u = Z.contains(e.ownerDocument, e);
			if (!(Q.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || Z.isXMLDoc(e))) for (s = v(a), o = v(e), r = 0, i = o.length; i > r; r++) y(o[r], s[r]);
			if (t) if (n) for (o = o || v(e), s = s || v(a), r = 0, i = o.length; i > r; r++) m(o[r], s[r]);
			else m(e, a);
			return s = v(a, "script"), s.length > 0 && g(s, !u && v(e, "script")), a
		},
		buildFragment: function(e, t, n, r) {
			for (var i, o, s, a, u, l, c = t.createDocumentFragment(), f = [], p = 0, d = e.length; d > p; p++) if (i = e[p], i || 0 === i) if ("object" === Z.type(i)) Z.merge(f, i.nodeType ? [i] : i);
			else if (qt.test(i)) {
				for (o = o || c.appendChild(t.createElement("div")), s = (Lt.exec(i) || ["", ""])[1].toLowerCase(), a = Rt[s] || Rt._default, o.innerHTML = a[1] + i.replace(At, "<$1></$2>") + a[2], l = a[0]; l--;) o = o.lastChild;
				Z.merge(f, o.childNodes), o = c.firstChild, o.textContent = ""
			} else f.push(t.createTextNode(i));
			for (c.textContent = "", p = 0; i = f[p++];) if ((!r || -1 === Z.inArray(i, r)) && (u = Z.contains(i.ownerDocument, i), o = v(c.appendChild(i), "script"), u && g(o), n)) for (l = 0; i = o[l++];) Ft.test(i.type || "") && n.push(i);
			return c
		},
		cleanData: function(e) {
			for (var t, n, r, i, o = Z.event.special, s = 0; void 0 !== (n = e[s]); s++) {
				if (Z.acceptData(n) && (i = n[vt.expando], i && (t = vt.cache[i]))) {
					if (t.events) for (r in t.events) o[r] ? Z.event.remove(n, r) : Z.removeEvent(n, r, t.handle);
					vt.cache[i] && delete vt.cache[i]
				}
				delete yt.cache[n[yt.expando]]
			}
		}
	}), Z.fn.extend({
		text: function(e) {
			return mt(this, function(e) {
				return void 0 === e ? Z.text(this) : this.empty().each(function() {
					(1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && (this.textContent = e)
				})
			}, null, e, arguments.length)
		},
		append: function() {
			return this.domManip(arguments, function(e) {
				if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
					var t = p(this, e);
					t.appendChild(e)
				}
			})
		},
		prepend: function() {
			return this.domManip(arguments, function(e) {
				if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
					var t = p(this, e);
					t.insertBefore(e, t.firstChild)
				}
			})
		},
		before: function() {
			return this.domManip(arguments, function(e) {
				this.parentNode && this.parentNode.insertBefore(e, this)
			})
		},
		after: function() {
			return this.domManip(arguments, function(e) {
				this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
			})
		},
		remove: function(e, t) {
			for (var n, r = e ? Z.filter(e, this) : this, i = 0; null != (n = r[i]); i++) t || 1 !== n.nodeType || Z.cleanData(v(n)), n.parentNode && (t && Z.contains(n.ownerDocument, n) && g(v(n, "script")), n.parentNode.removeChild(n));
			return this
		},
		empty: function() {
			for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (Z.cleanData(v(e, !1)), e.textContent = "");
			return this
		},
		clone: function(e, t) {
			return e = null == e ? !1 : e, t = null == t ? e : t, this.map(function() {
				return Z.clone(this, e, t)
			})
		},
		html: function(e) {
			return mt(this, function(e) {
				var t = this[0] || {}, n = 0,
					r = this.length;
				if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
				if ("string" == typeof e && !Ht.test(e) && !Rt[(Lt.exec(e) || ["", ""])[1].toLowerCase()]) {
					e = e.replace(At, "<$1></$2>");
					try {
						for (; r > n; n++) t = this[n] || {}, 1 === t.nodeType && (Z.cleanData(v(t, !1)), t.innerHTML = e);
						t = 0
					} catch (i) {}
				}
				t && this.empty().append(e)
			}, null, e, arguments.length)
		},
		replaceWith: function() {
			var e = arguments[0];
			return this.domManip(arguments, function(t) {
				e = this.parentNode, Z.cleanData(v(this)), e && e.replaceChild(t, this)
			}), e && (e.length || e.nodeType) ? this : this.remove()
		},
		detach: function(e) {
			return this.remove(e, !0)
		},
		domManip: function(e, t) {
			e = z.apply([], e);
			var n, r, i, o, s, a, u = 0,
				l = this.length,
				c = this,
				f = l - 1,
				p = e[0],
				g = Z.isFunction(p);
			if (g || l > 1 && "string" == typeof p && !Q.checkClone && Ot.test(p)) return this.each(function(n) {
				var r = c.eq(n);
				g && (e[0] = p.call(this, n, r.html())), r.domManip(e, t)
			});
			if (l && (n = Z.buildFragment(e, this[0].ownerDocument, !1, this), r = n.firstChild, 1 === n.childNodes.length && (n = r), r)) {
				for (i = Z.map(v(n, "script"), d), o = i.length; l > u; u++) s = n, u !== f && (s = Z.clone(s, !0, !0), o && Z.merge(i, v(s, "script"))), t.call(this[u], s, u);
				if (o) for (a = i[i.length - 1].ownerDocument, Z.map(i, h), u = 0; o > u; u++) s = i[u], Ft.test(s.type || "") && !vt.access(s, "globalEval") && Z.contains(a, s) && (s.src ? Z._evalUrl && Z._evalUrl(s.src) : Z.globalEval(s.textContent.replace(Mt, "")))
			}
			return this
		}
	}), Z.each({
		appendTo: "append",
		prependTo: "prepend",
		insertBefore: "before",
		insertAfter: "after",
		replaceAll: "replaceWith"
	}, function(e, t) {
		Z.fn[e] = function(e) {
			for (var n, r = [], i = Z(e), o = i.length - 1, s = 0; o >= s; s++) n = s === o ? this : this.clone(!0), Z(i[s])[t](n), X.apply(r, n.get());
			return this.pushStack(r)
		}
	});
	var Wt, $t = {}, Bt = /^margin/,
		It = new RegExp("^(" + wt + ")(?!px)[a-z%]+$", "i"),
		_t = function(e) {
			return e.ownerDocument.defaultView.getComputedStyle(e, null)
		};
	! function() {
		function t() {
			s.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute", s.innerHTML = "", i.appendChild(o);
			var t = e.getComputedStyle(s, null);
			n = "1%" !== t.top, r = "4px" === t.width, i.removeChild(o)
		}
		var n, r, i = J.documentElement,
			o = J.createElement("div"),
			s = J.createElement("div");
		s.style && (s.style.backgroundClip = "content-box", s.cloneNode(!0).style.backgroundClip = "", Q.clearCloneStyle = "content-box" === s.style.backgroundClip, o.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute", o.appendChild(s), e.getComputedStyle && Z.extend(Q, {
			pixelPosition: function() {
				return t(), n
			},
			boxSizingReliable: function() {
				return null == r && t(), r
			},
			reliableMarginRight: function() {
				var t, n = s.appendChild(J.createElement("div"));
				return n.style.cssText = s.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0", n.style.marginRight = n.style.width = "0", s.style.width = "1px", i.appendChild(o), t = !parseFloat(e.getComputedStyle(n, null).marginRight), i.removeChild(o), t
			}
		}))
	}(), Z.swap = function(e, t, n, r) {
		var i, o, s = {};
		for (o in t) s[o] = e.style[o], e.style[o] = t[o];
		i = n.apply(e, r || []);
		for (o in t) e.style[o] = s[o];
		return i
	};
	var zt = /^(none|table(?!-c[ea]).+)/,
		Xt = new RegExp("^(" + wt + ")(.*)$", "i"),
		Ut = new RegExp("^([+-])=(" + wt + ")", "i"),
		Vt = {
			position: "absolute",
			visibility: "hidden",
			display: "block"
		}, Yt = {
			letterSpacing: "0",
			fontWeight: "400"
		}, Gt = ["Webkit", "O", "Moz", "ms"];
	Z.extend({
		cssHooks: {
			opacity: {
				get: function(e, t) {
					if (t) {
						var n = w(e, "opacity");
						return "" === n ? "1" : n
					}
				}
			}
		},
		cssNumber: {
			columnCount: !0,
			fillOpacity: !0,
			flexGrow: !0,
			flexShrink: !0,
			fontWeight: !0,
			lineHeight: !0,
			opacity: !0,
			order: !0,
			orphans: !0,
			widows: !0,
			zIndex: !0,
			zoom: !0
		},
		cssProps: {
			"float": "cssFloat"
		},
		style: function(e, t, n, r) {
			if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
				var i, o, s, a = Z.camelCase(t),
					u = e.style;
				return t = Z.cssProps[a] || (Z.cssProps[a] = C(u, a)), s = Z.cssHooks[t] || Z.cssHooks[a], void 0 === n ? s && "get" in s && void 0 !== (i = s.get(e, !1, r)) ? i : u[t] : (o = typeof n, "string" === o && (i = Ut.exec(n)) && (n = (i[1] + 1) * i[2] + parseFloat(Z.css(e, t)), o = "number"), null != n && n === n && ("number" !== o || Z.cssNumber[a] || (n += "px"), Q.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (u[t] = "inherit"), s && "set" in s && void 0 === (n = s.set(e, n, r)) || (u[t] = n)), void 0)
			}
		},
		css: function(e, t, n, r) {
			var i, o, s, a = Z.camelCase(t);
			return t = Z.cssProps[a] || (Z.cssProps[a] = C(e.style, a)), s = Z.cssHooks[t] || Z.cssHooks[a], s && "get" in s && (i = s.get(e, !0, n)), void 0 === i && (i = w(e, t, r)), "normal" === i && t in Yt && (i = Yt[t]), "" === n || n ? (o = parseFloat(i), n === !0 || Z.isNumeric(o) ? o || 0 : i) : i
		}
	}), Z.each(["height", "width"], function(e, t) {
		Z.cssHooks[t] = {
			get: function(e, n, r) {
				return n ? zt.test(Z.css(e, "display")) && 0 === e.offsetWidth ? Z.swap(e, Vt, function() {
					return E(e, t, r)
				}) : E(e, t, r) : void 0
			},
			set: function(e, n, r) {
				var i = r && _t(e);
				return N(e, n, r ? k(e, t, r, "border-box" === Z.css(e, "boxSizing", !1, i), i) : 0)
			}
		}
	}), Z.cssHooks.marginRight = T(Q.reliableMarginRight, function(e, t) {
		return t ? Z.swap(e, {
			display: "inline-block"
		}, w, [e, "marginRight"]) : void 0
	}), Z.each({
		margin: "",
		padding: "",
		border: "Width"
	}, function(e, t) {
		Z.cssHooks[e + t] = {
			expand: function(n) {
				for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; 4 > r; r++) i[e + Tt[r] + t] = o[r] || o[r - 2] || o[0];
				return i
			}
		}, Bt.test(e) || (Z.cssHooks[e + t].set = N)
	}), Z.fn.extend({
		css: function(e, t) {
			return mt(this, function(e, t, n) {
				var r, i, o = {}, s = 0;
				if (Z.isArray(t)) {
					for (r = _t(e), i = t.length; i > s; s++) o[t[s]] = Z.css(e, t[s], !1, r);
					return o
				}
				return void 0 !== n ? Z.style(e, t, n) : Z.css(e, t)
			}, e, t, arguments.length > 1)
		},
		show: function() {
			return S(this, !0)
		},
		hide: function() {
			return S(this)
		},
		toggle: function(e) {
			return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
				Ct(this) ? Z(this).show() : Z(this).hide()
			})
		}
	}), Z.Tween = j, j.prototype = {
		constructor: j,
		init: function(e, t, n, r, i, o) {
			this.elem = e, this.prop = n, this.easing = i || "swing", this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (Z.cssNumber[n] ? "" : "px")
		},
		cur: function() {
			var e = j.propHooks[this.prop];
			return e && e.get ? e.get(this) : j.propHooks._default.get(this)
		},
		run: function(e) {
			var t, n = j.propHooks[this.prop];
			return this.pos = t = this.options.duration ? Z.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : j.propHooks._default.set(this), this
		}
	}, j.prototype.init.prototype = j.prototype, j.propHooks = {
		_default: {
			get: function(e) {
				var t;
				return null == e.elem[e.prop] || e.elem.style && null != e.elem.style[e.prop] ? (t = Z.css(e.elem, e.prop, ""), t && "auto" !== t ? t : 0) : e.elem[e.prop]
			},
			set: function(e) {
				Z.fx.step[e.prop] ? Z.fx.step[e.prop](e) : e.elem.style && (null != e.elem.style[Z.cssProps[e.prop]] || Z.cssHooks[e.prop]) ? Z.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now
			}
		}
	}, j.propHooks.scrollTop = j.propHooks.scrollLeft = {
		set: function(e) {
			e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
		}
	}, Z.easing = {
		linear: function(e) {
			return e
		},
		swing: function(e) {
			return .5 - Math.cos(e * Math.PI) / 2
		}
	}, Z.fx = j.prototype.init, Z.fx.step = {};
	var Qt, Jt, Kt = /^(?:toggle|show|hide)$/,
		Zt = new RegExp("^(?:([+-])=|)(" + wt + ")([a-z%]*)$", "i"),
		en = /queueHooks$/,
		tn = [q],
		nn = {
			"*": [function(e, t) {
				var n = this.createTween(e, t),
					r = n.cur(),
					i = Zt.exec(t),
					o = i && i[3] || (Z.cssNumber[e] ? "" : "px"),
					s = (Z.cssNumber[e] || "px" !== o && +r) && Zt.exec(Z.css(n.elem, e)),
					a = 1,
					u = 20;
				if (s && s[3] !== o) {
					o = o || s[3], i = i || [], s = +r || 1;
					do a = a || ".5", s /= a, Z.style(n.elem, e, s + o);
					while (a !== (a = n.cur() / r) && 1 !== a && --u)
				}
				return i && (s = n.start = +s || +r || 0, n.unit = o, n.end = i[1] ? s + (i[1] + 1) * i[2] : +i[2]), n
			}]
		};
	Z.Animation = Z.extend(O, {
		tweener: function(e, t) {
			Z.isFunction(e) ? (t = e, e = ["*"]) : e = e.split(" ");
			for (var n, r = 0, i = e.length; i > r; r++) n = e[r], nn[n] = nn[n] || [], nn[n].unshift(t)
		},
		prefilter: function(e, t) {
			t ? tn.unshift(e) : tn.push(e)
		}
	}), Z.speed = function(e, t, n) {
		var r = e && "object" == typeof e ? Z.extend({}, e) : {
			complete: n || !n && t || Z.isFunction(e) && e,
			duration: e,
			easing: n && t || t && !Z.isFunction(t) && t
		};
		return r.duration = Z.fx.off ? 0 : "number" == typeof r.duration ? r.duration : r.duration in Z.fx.speeds ? Z.fx.speeds[r.duration] : Z.fx.speeds._default, (null == r.queue || r.queue === !0) && (r.queue = "fx"), r.old = r.complete, r.complete = function() {
			Z.isFunction(r.old) && r.old.call(this), r.queue && Z.dequeue(this, r.queue)
		}, r
	}, Z.fn.extend({
		fadeTo: function(e, t, n, r) {
			return this.filter(Ct).css("opacity", 0).show().end().animate({
				opacity: t
			}, e, n, r)
		},
		animate: function(e, t, n, r) {
			var i = Z.isEmptyObject(e),
				o = Z.speed(t, n, r),
				s = function() {
					var t = O(this, Z.extend({}, e), o);
					(i || vt.get(this, "finish")) && t.stop(!0)
				};
			return s.finish = s, i || o.queue === !1 ? this.each(s) : this.queue(o.queue, s)
		},
		stop: function(e, t, n) {
			var r = function(e) {
				var t = e.stop;
				delete e.stop, t(n)
			};
			return "string" != typeof e && (n = t, t = e, e = void 0), t && e !== !1 && this.queue(e || "fx", []), this.each(function() {
				var t = !0,
					i = null != e && e + "queueHooks",
					o = Z.timers,
					s = vt.get(this);
				if (i) s[i] && s[i].stop && r(s[i]);
				else for (i in s) s[i] && s[i].stop && en.test(i) && r(s[i]);
				for (i = o.length; i--;) o[i].elem !== this || null != e && o[i].queue !== e || (o[i].anim.stop(n), t = !1, o.splice(i, 1));
				(t || !n) && Z.dequeue(this, e)
			})
		},
		finish: function(e) {
			return e !== !1 && (e = e || "fx"), this.each(function() {
				var t, n = vt.get(this),
					r = n[e + "queue"],
					i = n[e + "queueHooks"],
					o = Z.timers,
					s = r ? r.length : 0;
				for (n.finish = !0, Z.queue(this, e, []), i && i.stop && i.stop.call(this, !0), t = o.length; t--;) o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0), o.splice(t, 1));
				for (t = 0; s > t; t++) r[t] && r[t].finish && r[t].finish.call(this);
				delete n.finish
			})
		}
	}), Z.each(["toggle", "show", "hide"], function(e, t) {
		var n = Z.fn[t];
		Z.fn[t] = function(e, r, i) {
			return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(A(t, !0), e, r, i)
		}
	}), Z.each({
		slideDown: A("show"),
		slideUp: A("hide"),
		slideToggle: A("toggle"),
		fadeIn: {
			opacity: "show"
		},
		fadeOut: {
			opacity: "hide"
		},
		fadeToggle: {
			opacity: "toggle"
		}
	}, function(e, t) {
		Z.fn[e] = function(e, n, r) {
			return this.animate(t, e, n, r)
		}
	}), Z.timers = [], Z.fx.tick = function() {
		var e, t = 0,
			n = Z.timers;
		for (Qt = Z.now(); t < n.length; t++) e = n[t], e() || n[t] !== e || n.splice(t--, 1);
		n.length || Z.fx.stop(), Qt = void 0
	}, Z.fx.timer = function(e) {
		Z.timers.push(e), e() ? Z.fx.start() : Z.timers.pop()
	}, Z.fx.interval = 13, Z.fx.start = function() {
		Jt || (Jt = setInterval(Z.fx.tick, Z.fx.interval))
	}, Z.fx.stop = function() {
		clearInterval(Jt), Jt = null
	}, Z.fx.speeds = {
		slow: 600,
		fast: 200,
		_default: 400
	}, Z.fn.delay = function(e, t) {
		return e = Z.fx ? Z.fx.speeds[e] || e : e, t = t || "fx", this.queue(t, function(t, n) {
			var r = setTimeout(t, e);
			n.stop = function() {
				clearTimeout(r)
			}
		})
	},
	function() {
		var e = J.createElement("input"),
			t = J.createElement("select"),
			n = t.appendChild(J.createElement("option"));
		e.type = "checkbox", Q.checkOn = "" !== e.value, Q.optSelected = n.selected, t.disabled = !0, Q.optDisabled = !n.disabled, e = J.createElement("input"), e.value = "t", e.type = "radio", Q.radioValue = "t" === e.value
	}();
	var rn, on, sn = Z.expr.attrHandle;
	Z.fn.extend({
		attr: function(e, t) {
			return mt(this, Z.attr, e, t, arguments.length > 1)
		},
		removeAttr: function(e) {
			return this.each(function() {
				Z.removeAttr(this, e)
			})
		}
	}), Z.extend({
		attr: function(e, t, n) {
			var r, i, o = e.nodeType;
			if (e && 3 !== o && 8 !== o && 2 !== o) return typeof e.getAttribute === kt ? Z.prop(e, t, n) : (1 === o && Z.isXMLDoc(e) || (t = t.toLowerCase(), r = Z.attrHooks[t] || (Z.expr.match.bool.test(t) ? on : rn)), void 0 === n ? r && "get" in r && null !== (i = r.get(e, t)) ? i : (i = Z.find.attr(e, t), null == i ? void 0 : i) : null !== n ? r && "set" in r && void 0 !== (i = r.set(e, n, t)) ? i : (e.setAttribute(t, n + ""), n) : void Z.removeAttr(e, t))
		},
		removeAttr: function(e, t) {
			var n, r, i = 0,
				o = t && t.match(dt);
			if (o && 1 === e.nodeType) for (; n = o[i++];) r = Z.propFix[n] || n, Z.expr.match.bool.test(n) && (e[r] = !1), e.removeAttribute(n)
		},
		attrHooks: {
			type: {
				set: function(e, t) {
					if (!Q.radioValue && "radio" === t && Z.nodeName(e, "input")) {
						var n = e.value;
						return e.setAttribute("type", t), n && (e.value = n), t
					}
				}
			}
		}
	}), on = {
		set: function(e, t, n) {
			return t === !1 ? Z.removeAttr(e, n) : e.setAttribute(n, n), n
		}
	}, Z.each(Z.expr.match.bool.source.match(/\w+/g), function(e, t) {
		var n = sn[t] || Z.find.attr;
		sn[t] = function(e, t, r) {
			var i, o;
			return r || (o = sn[t], sn[t] = i, i = null != n(e, t, r) ? t.toLowerCase() : null, sn[t] = o), i
		}
	});
	var an = /^(?:input|select|textarea|button)$/i;
	Z.fn.extend({
		prop: function(e, t) {
			return mt(this, Z.prop, e, t, arguments.length > 1)
		},
		removeProp: function(e) {
			return this.each(function() {
				delete this[Z.propFix[e] || e]
			})
		}
	}), Z.extend({
		propFix: {
			"for": "htmlFor",
			"class": "className"
		},
		prop: function(e, t, n) {
			var r, i, o, s = e.nodeType;
			if (e && 3 !== s && 8 !== s && 2 !== s) return o = 1 !== s || !Z.isXMLDoc(e), o && (t = Z.propFix[t] || t, i = Z.propHooks[t]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t]
		},
		propHooks: {
			tabIndex: {
				get: function(e) {
					return e.hasAttribute("tabindex") || an.test(e.nodeName) || e.href ? e.tabIndex : -1
				}
			}
		}
	}), Q.optSelected || (Z.propHooks.selected = {
		get: function(e) {
			var t = e.parentNode;
			return t && t.parentNode && t.parentNode.selectedIndex, null
		}
	}), Z.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
		Z.propFix[this.toLowerCase()] = this
	});
	var un = /[\t\r\n\f]/g;
	Z.fn.extend({
		addClass: function(e) {
			var t, n, r, i, o, s, a = "string" == typeof e && e,
				u = 0,
				l = this.length;
			if (Z.isFunction(e)) return this.each(function(t) {
				Z(this).addClass(e.call(this, t, this.className))
			});
			if (a) for (t = (e || "").match(dt) || []; l > u; u++) if (n = this[u], r = 1 === n.nodeType && (n.className ? (" " + n.className + " ").replace(un, " ") : " ")) {
				for (o = 0; i = t[o++];) r.indexOf(" " + i + " ") < 0 && (r += i + " ");
				s = Z.trim(r), n.className !== s && (n.className = s)
			}
			return this
		},
		removeClass: function(e) {
			var t, n, r, i, o, s, a = 0 === arguments.length || "string" == typeof e && e,
				u = 0,
				l = this.length;
			if (Z.isFunction(e)) return this.each(function(t) {
				Z(this).removeClass(e.call(this, t, this.className))
			});
			if (a) for (t = (e || "").match(dt) || []; l > u; u++) if (n = this[u], r = 1 === n.nodeType && (n.className ? (" " + n.className + " ").replace(un, " ") : "")) {
				for (o = 0; i = t[o++];) for (; r.indexOf(" " + i + " ") >= 0;) r = r.replace(" " + i + " ", " ");
				s = e ? Z.trim(r) : "", n.className !== s && (n.className = s)
			}
			return this
		},
		toggleClass: function(e, t) {
			var n = typeof e;
			return "boolean" == typeof t && "string" === n ? t ? this.addClass(e) : this.removeClass(e) : this.each(Z.isFunction(e) ? function(n) {
				Z(this).toggleClass(e.call(this, n, this.className, t), t)
			} : function() {
				if ("string" === n) for (var t, r = 0, i = Z(this), o = e.match(dt) || []; t = o[r++];) i.hasClass(t) ? i.removeClass(t) : i.addClass(t);
				else(n === kt || "boolean" === n) && (this.className && vt.set(this, "__className__", this.className), this.className = this.className || e === !1 ? "" : vt.get(this, "__className__") || "")
			})
		},
		hasClass: function(e) {
			for (var t = " " + e + " ", n = 0, r = this.length; r > n; n++) if (1 === this[n].nodeType && (" " + this[n].className + " ").replace(un, " ").indexOf(t) >= 0) return !0;
			return !1
		}
	});
	var ln = /\r/g;
	Z.fn.extend({
		val: function(e) {
			var t, n, r, i = this[0]; {
				if (arguments.length) return r = Z.isFunction(e), this.each(function(n) {
					var i;
					1 === this.nodeType && (i = r ? e.call(this, n, Z(this).val()) : e, null == i ? i = "" : "number" == typeof i ? i += "" : Z.isArray(i) && (i = Z.map(i, function(e) {
						return null == e ? "" : e + ""
					})), t = Z.valHooks[this.type] || Z.valHooks[this.nodeName.toLowerCase()], t && "set" in t && void 0 !== t.set(this, i, "value") || (this.value = i))
				});
				if (i) return t = Z.valHooks[i.type] || Z.valHooks[i.nodeName.toLowerCase()], t && "get" in t && void 0 !== (n = t.get(i, "value")) ? n : (n = i.value, "string" == typeof n ? n.replace(ln, "") : null == n ? "" : n)
			}
		}
	}), Z.extend({
		valHooks: {
			option: {
				get: function(e) {
					var t = Z.find.attr(e, "value");
					return null != t ? t : Z.trim(Z.text(e))
				}
			},
			select: {
				get: function(e) {
					for (var t, n, r = e.options, i = e.selectedIndex, o = "select-one" === e.type || 0 > i, s = o ? null : [], a = o ? i + 1 : r.length, u = 0 > i ? a : o ? i : 0; a > u; u++) if (n = r[u], !(!n.selected && u !== i || (Q.optDisabled ? n.disabled : null !== n.getAttribute("disabled")) || n.parentNode.disabled && Z.nodeName(n.parentNode, "optgroup"))) {
						if (t = Z(n).val(), o) return t;
						s.push(t)
					}
					return s
				},
				set: function(e, t) {
					for (var n, r, i = e.options, o = Z.makeArray(t), s = i.length; s--;) r = i[s], (r.selected = Z.inArray(r.value, o) >= 0) && (n = !0);
					return n || (e.selectedIndex = -1), o
				}
			}
		}
	}), Z.each(["radio", "checkbox"], function() {
		Z.valHooks[this] = {
			set: function(e, t) {
				return Z.isArray(t) ? e.checked = Z.inArray(Z(e).val(), t) >= 0 : void 0
			}
		}, Q.checkOn || (Z.valHooks[this].get = function(e) {
			return null === e.getAttribute("value") ? "on" : e.value
		})
	}), Z.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(e, t) {
		Z.fn[t] = function(e, n) {
			return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
		}
	}), Z.fn.extend({
		hover: function(e, t) {
			return this.mouseenter(e).mouseleave(t || e)
		},
		bind: function(e, t, n) {
			return this.on(e, null, t, n)
		},
		unbind: function(e, t) {
			return this.off(e, null, t)
		},
		delegate: function(e, t, n, r) {
			return this.on(t, e, n, r)
		},
		undelegate: function(e, t, n) {
			return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
		}
	});
	var cn = Z.now(),
		fn = /\?/;
	Z.parseJSON = function(e) {
		return JSON.parse(e + "")
	}, Z.parseXML = function(e) {
		var t, n;
		if (!e || "string" != typeof e) return null;
		try {
			n = new DOMParser, t = n.parseFromString(e, "text/xml")
		} catch (r) {
			t = void 0
		}
		return (!t || t.getElementsByTagName("parsererror").length) && Z.error("Invalid XML: " + e), t
	};
	var pn, dn, hn = /#.*$/,
		gn = /([?&])_=[^&]*/,
		mn = /^(.*?):[ \t]*([^\r\n]*)$/gm,
		vn = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
		yn = /^(?:GET|HEAD)$/,
		xn = /^\/\//,
		bn = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
		wn = {}, Tn = {}, Cn = "*/".concat("*");
	try {
		dn = location.href
	} catch (Nn) {
		dn = J.createElement("a"), dn.href = "", dn = dn.href
	}
	pn = bn.exec(dn.toLowerCase()) || [], Z.extend({
		active: 0,
		lastModified: {},
		etag: {},
		ajaxSettings: {
			url: dn,
			type: "GET",
			isLocal: vn.test(pn[1]),
			global: !0,
			processData: !0,
			async: !0,
			contentType: "application/x-www-form-urlencoded; charset=UTF-8",
			accepts: {
				"*": Cn,
				text: "text/plain",
				html: "text/html",
				xml: "application/xml, text/xml",
				json: "application/json, text/javascript"
			},
			contents: {
				xml: /xml/,
				html: /html/,
				json: /json/
			},
			responseFields: {
				xml: "responseXML",
				text: "responseText",
				json: "responseJSON"
			},
			converters: {
				"* text": String,
				"text html": !0,
				"text json": Z.parseJSON,
				"text xml": Z.parseXML
			},
			flatOptions: {
				url: !0,
				context: !0
			}
		},
		ajaxSetup: function(e, t) {
			return t ? M(M(e, Z.ajaxSettings), t) : M(Z.ajaxSettings, e)
		},
		ajaxPrefilter: F(wn),
		ajaxTransport: F(Tn),
		ajax: function(e, t) {
			function n(e, t, n, s) {
				var u, c, v, y, b, T = t;
				2 !== x && (x = 2, a && clearTimeout(a), r = void 0, o = s || "", w.readyState = e > 0 ? 4 : 0, u = e >= 200 && 300 > e || 304 === e, n && (y = R(f, w, n)), y = W(f, y, w, u), u ? (f.ifModified && (b = w.getResponseHeader("Last-Modified"), b && (Z.lastModified[i] = b), b = w.getResponseHeader("etag"), b && (Z.etag[i] = b)), 204 === e || "HEAD" === f.type ? T = "nocontent" : 304 === e ? T = "notmodified" : (T = y.state, c = y.data, v = y.error, u = !v)) : (v = T, (e || !T) && (T = "error", 0 > e && (e = 0))), w.status = e, w.statusText = (t || T) + "", u ? h.resolveWith(p, [c, T, w]) : h.rejectWith(p, [w, T, v]), w.statusCode(m), m = void 0, l && d.trigger(u ? "ajaxSuccess" : "ajaxError", [w, f, u ? c : v]), g.fireWith(p, [w, T]), l && (d.trigger("ajaxComplete", [w, f]), --Z.active || Z.event.trigger("ajaxStop")))
			}
			"object" == typeof e && (t = e, e = void 0), t = t || {};
			var r, i, o, s, a, u, l, c, f = Z.ajaxSetup({}, t),
				p = f.context || f,
				d = f.context && (p.nodeType || p.jquery) ? Z(p) : Z.event,
				h = Z.Deferred(),
				g = Z.Callbacks("once memory"),
				m = f.statusCode || {}, v = {}, y = {}, x = 0,
				b = "canceled",
				w = {
					readyState: 0,
					getResponseHeader: function(e) {
						var t;
						if (2 === x) {
							if (!s) for (s = {}; t = mn.exec(o);) s[t[1].toLowerCase()] = t[2];
							t = s[e.toLowerCase()]
						}
						return null == t ? null : t
					},
					getAllResponseHeaders: function() {
						return 2 === x ? o : null
					},
					setRequestHeader: function(e, t) {
						var n = e.toLowerCase();
						return x || (e = y[n] = y[n] || e, v[e] = t), this
					},
					overrideMimeType: function(e) {
						return x || (f.mimeType = e), this
					},
					statusCode: function(e) {
						var t;
						if (e) if (2 > x) for (t in e) m[t] = [m[t], e[t]];
						else w.always(e[w.status]);
						return this
					},
					abort: function(e) {
						var t = e || b;
						return r && r.abort(t), n(0, t), this
					}
				};
			if (h.promise(w).complete = g.add, w.success = w.done, w.error = w.fail, f.url = ((e || f.url || dn) + "").replace(hn, "").replace(xn, pn[1] + "//"), f.type = t.method || t.type || f.method || f.type, f.dataTypes = Z.trim(f.dataType || "*").toLowerCase().match(dt) || [""], null == f.crossDomain && (u = bn.exec(f.url.toLowerCase()), f.crossDomain = !(!u || u[1] === pn[1] && u[2] === pn[2] && (u[3] || ("http:" === u[1] ? "80" : "443")) === (pn[3] || ("http:" === pn[1] ? "80" : "443")))), f.data && f.processData && "string" != typeof f.data && (f.data = Z.param(f.data, f.traditional)), P(wn, f, t, w), 2 === x) return w;
			l = f.global, l && 0 === Z.active++ && Z.event.trigger("ajaxStart"), f.type = f.type.toUpperCase(), f.hasContent = !yn.test(f.type), i = f.url, f.hasContent || (f.data && (i = f.url += (fn.test(i) ? "&" : "?") + f.data, delete f.data), f.cache === !1 && (f.url = gn.test(i) ? i.replace(gn, "$1_=" + cn++) : i + (fn.test(i) ? "&" : "?") + "_=" + cn++)), f.ifModified && (Z.lastModified[i] && w.setRequestHeader("If-Modified-Since", Z.lastModified[i]), Z.etag[i] && w.setRequestHeader("If-None-Match", Z.etag[i])), (f.data && f.hasContent && f.contentType !== !1 || t.contentType) && w.setRequestHeader("Content-Type", f.contentType), w.setRequestHeader("Accept", f.dataTypes[0] && f.accepts[f.dataTypes[0]] ? f.accepts[f.dataTypes[0]] + ("*" !== f.dataTypes[0] ? ", " + Cn + "; q=0.01" : "") : f.accepts["*"]);
			for (c in f.headers) w.setRequestHeader(c, f.headers[c]);
			if (f.beforeSend && (f.beforeSend.call(p, w, f) === !1 || 2 === x)) return w.abort();
			b = "abort";
			for (c in {
				success: 1,
				error: 1,
				complete: 1
			}) w[c](f[c]);
			if (r = P(Tn, f, t, w)) {
				w.readyState = 1, l && d.trigger("ajaxSend", [w, f]), f.async && f.timeout > 0 && (a = setTimeout(function() {
					w.abort("timeout")
				}, f.timeout));
				try {
					x = 1, r.send(v, n)
				} catch (T) {
					if (!(2 > x)) throw T;
					n(-1, T)
				}
			} else n(-1, "No Transport");
			return w
		},
		getJSON: function(e, t, n) {
			return Z.get(e, t, n, "json")
		},
		getScript: function(e, t) {
			return Z.get(e, void 0, t, "script")
		}
	}), Z.each(["get", "post"], function(e, t) {
		Z[t] = function(e, n, r, i) {
			return Z.isFunction(n) && (i = i || r, r = n, n = void 0), Z.ajax({
				url: e,
				type: t,
				dataType: i,
				data: n,
				success: r
			})
		}
	}), Z.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
		Z.fn[t] = function(e) {
			return this.on(t, e)
		}
	}), Z._evalUrl = function(e) {
		return Z.ajax({
			url: e,
			type: "GET",
			dataType: "script",
			async: !1,
			global: !1,
			"throws": !0
		})
	}, Z.fn.extend({
		wrapAll: function(e) {
			var t;
			return Z.isFunction(e) ? this.each(function(t) {
				Z(this).wrapAll(e.call(this, t))
			}) : (this[0] && (t = Z(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
				for (var e = this; e.firstElementChild;) e = e.firstElementChild;
				return e
			}).append(this)), this)
		},
		wrapInner: function(e) {
			return this.each(Z.isFunction(e) ? function(t) {
				Z(this).wrapInner(e.call(this, t))
			} : function() {
				var t = Z(this),
					n = t.contents();
				n.length ? n.wrapAll(e) : t.append(e)
			})
		},
		wrap: function(e) {
			var t = Z.isFunction(e);
			return this.each(function(n) {
				Z(this).wrapAll(t ? e.call(this, n) : e)
			})
		},
		unwrap: function() {
			return this.parent().each(function() {
				Z.nodeName(this, "body") || Z(this).replaceWith(this.childNodes)
			}).end()
		}
	}), Z.expr.filters.hidden = function(e) {
		return e.offsetWidth <= 0 && e.offsetHeight <= 0
	}, Z.expr.filters.visible = function(e) {
		return !Z.expr.filters.hidden(e)
	};
	var kn = /%20/g,
		En = /\[\]$/,
		Sn = /\r?\n/g,
		jn = /^(?:submit|button|image|reset|file)$/i,
		Dn = /^(?:input|select|textarea|keygen)/i;
	Z.param = function(e, t) {
		var n, r = [],
			i = function(e, t) {
				t = Z.isFunction(t) ? t() : null == t ? "" : t, r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
			};
		if (void 0 === t && (t = Z.ajaxSettings && Z.ajaxSettings.traditional), Z.isArray(e) || e.jquery && !Z.isPlainObject(e)) Z.each(e, function() {
			i(this.name, this.value)
		});
		else for (n in e) $(n, e[n], t, i);
		return r.join("&").replace(kn, "+")
	}, Z.fn.extend({
		serialize: function() {
			return Z.param(this.serializeArray())
		},
		serializeArray: function() {
			return this.map(function() {
				var e = Z.prop(this, "elements");
				return e ? Z.makeArray(e) : this
			}).filter(function() {
				var e = this.type;
				return this.name && !Z(this).is(":disabled") && Dn.test(this.nodeName) && !jn.test(e) && (this.checked || !Nt.test(e))
			}).map(function(e, t) {
				var n = Z(this).val();
				return null == n ? null : Z.isArray(n) ? Z.map(n, function(e) {
					return {
						name: t.name,
						value: e.replace(Sn, "\r\n")
					}
				}) : {
					name: t.name,
					value: n.replace(Sn, "\r\n")
				}
			}).get()
		}
	}), Z.ajaxSettings.xhr = function() {
		try {
			return new XMLHttpRequest
		} catch (e) {}
	};
	var An = 0,
		Ln = {}, qn = {
			0: 200,
			1223: 204
		}, Hn = Z.ajaxSettings.xhr();
	e.ActiveXObject && Z(e).on("unload", function() {
		for (var e in Ln) Ln[e]()
	}), Q.cors = !! Hn && "withCredentials" in Hn, Q.ajax = Hn = !! Hn, Z.ajaxTransport(function(e) {
		var t;
		return Q.cors || Hn && !e.crossDomain ? {
			send: function(n, r) {
				var i, o = e.xhr(),
					s = ++An;
				if (o.open(e.type, e.url, e.async, e.username, e.password), e.xhrFields) for (i in e.xhrFields) o[i] = e.xhrFields[i];
				e.mimeType && o.overrideMimeType && o.overrideMimeType(e.mimeType), e.crossDomain || n["X-Requested-With"] || (n["X-Requested-With"] = "XMLHttpRequest");
				for (i in n) o.setRequestHeader(i, n[i]);
				t = function(e) {
					return function() {
						t && (delete Ln[s], t = o.onload = o.onerror = null, "abort" === e ? o.abort() : "error" === e ? r(o.status, o.statusText) : r(qn[o.status] || o.status, o.statusText, "string" == typeof o.responseText ? {
							text: o.responseText
						} : void 0, o.getAllResponseHeaders()))
					}
				}, o.onload = t(), o.onerror = t("error"), t = Ln[s] = t("abort");
				try {
					o.send(e.hasContent && e.data || null)
				} catch (a) {
					if (t) throw a
				}
			},
			abort: function() {
				t && t()
			}
		} : void 0
	}), Z.ajaxSetup({
		accepts: {
			script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
		},
		contents: {
			script: /(?:java|ecma)script/
		},
		converters: {
			"text script": function(e) {
				return Z.globalEval(e), e
			}
		}
	}), Z.ajaxPrefilter("script", function(e) {
		void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
	}), Z.ajaxTransport("script", function(e) {
		if (e.crossDomain) {
			var t, n;
			return {
				send: function(r, i) {
					t = Z("<script>").prop({
						async: !0,
						charset: e.scriptCharset,
						src: e.url
					}).on("load error", n = function(e) {
						t.remove(), n = null, e && i("error" === e.type ? 404 : 200, e.type)
					}), J.head.appendChild(t[0])
				},
				abort: function() {
					n && n()
				}
			}
		}
	});
	var On = [],
		Fn = /(=)\?(?=&|$)|\?\?/;
	Z.ajaxSetup({
		jsonp: "callback",
		jsonpCallback: function() {
			var e = On.pop() || Z.expando + "_" + cn++;
			return this[e] = !0, e
		}
	}), Z.ajaxPrefilter("json jsonp", function(t, n, r) {
		var i, o, s, a = t.jsonp !== !1 && (Fn.test(t.url) ? "url" : "string" == typeof t.data && !(t.contentType || "").indexOf("application/x-www-form-urlencoded") && Fn.test(t.data) && "data");
		return a || "jsonp" === t.dataTypes[0] ? (i = t.jsonpCallback = Z.isFunction(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback, a ? t[a] = t[a].replace(Fn, "$1" + i) : t.jsonp !== !1 && (t.url += (fn.test(t.url) ? "&" : "?") + t.jsonp + "=" + i), t.converters["script json"] = function() {
			return s || Z.error(i + " was not called"), s[0]
		}, t.dataTypes[0] = "json", o = e[i], e[i] = function() {
			s = arguments
		}, r.always(function() {
			e[i] = o, t[i] && (t.jsonpCallback = n.jsonpCallback, On.push(i)), s && Z.isFunction(o) && o(s[0]), s = o = void 0
		}), "script") : void 0
	}), Z.parseHTML = function(e, t, n) {
		if (!e || "string" != typeof e) return null;
		"boolean" == typeof t && (n = t, t = !1), t = t || J;
		var r = st.exec(e),
			i = !n && [];
		return r ? [t.createElement(r[1])] : (r = Z.buildFragment([e], t, i), i && i.length && Z(i).remove(), Z.merge([], r.childNodes))
	};
	var Pn = Z.fn.load;
	Z.fn.load = function(e, t, n) {
		if ("string" != typeof e && Pn) return Pn.apply(this, arguments);
		var r, i, o, s = this,
			a = e.indexOf(" ");
		return a >= 0 && (r = Z.trim(e.slice(a)), e = e.slice(0, a)), Z.isFunction(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), s.length > 0 && Z.ajax({
			url: e,
			type: i,
			dataType: "html",
			data: t
		}).done(function(e) {
			o = arguments, s.html(r ? Z("<div>").append(Z.parseHTML(e)).find(r) : e)
		}).complete(n && function(e, t) {
			s.each(n, o || [e.responseText, t, e])
		}), this
	}, Z.expr.filters.animated = function(e) {
		return Z.grep(Z.timers, function(t) {
			return e === t.elem
		}).length
	};
	var Mn = e.document.documentElement;
	Z.offset = {
		setOffset: function(e, t, n) {
			var r, i, o, s, a, u, l, c = Z.css(e, "position"),
				f = Z(e),
				p = {};
			"static" === c && (e.style.position = "relative"), a = f.offset(), o = Z.css(e, "top"), u = Z.css(e, "left"), l = ("absolute" === c || "fixed" === c) && (o + u).indexOf("auto") > -1, l ? (r = f.position(), s = r.top, i = r.left) : (s = parseFloat(o) || 0, i = parseFloat(u) || 0), Z.isFunction(t) && (t = t.call(e, n, a)), null != t.top && (p.top = t.top - a.top + s), null != t.left && (p.left = t.left - a.left + i), "using" in t ? t.using.call(e, p) : f.css(p)
		}
	}, Z.fn.extend({
		offset: function(e) {
			if (arguments.length) return void 0 === e ? this : this.each(function(t) {
				Z.offset.setOffset(this, e, t)
			});
			var t, n, r = this[0],
				i = {
					top: 0,
					left: 0
				}, o = r && r.ownerDocument;
			if (o) return t = o.documentElement, Z.contains(t, r) ? (typeof r.getBoundingClientRect !== kt && (i = r.getBoundingClientRect()), n = B(o), {
				top: i.top + n.pageYOffset - t.clientTop,
				left: i.left + n.pageXOffset - t.clientLeft
			}) : i
		},
		position: function() {
			if (this[0]) {
				var e, t, n = this[0],
					r = {
						top: 0,
						left: 0
					};
				return "fixed" === Z.css(n, "position") ? t = n.getBoundingClientRect() : (e = this.offsetParent(), t = this.offset(), Z.nodeName(e[0], "html") || (r = e.offset()), r.top += Z.css(e[0], "borderTopWidth", !0), r.left += Z.css(e[0], "borderLeftWidth", !0)), {
					top: t.top - r.top - Z.css(n, "marginTop", !0),
					left: t.left - r.left - Z.css(n, "marginLeft", !0)
				}
			}
		},
		offsetParent: function() {
			return this.map(function() {
				for (var e = this.offsetParent || Mn; e && !Z.nodeName(e, "html") && "static" === Z.css(e, "position");) e = e.offsetParent;
				return e || Mn
			})
		}
	}), Z.each({
		scrollLeft: "pageXOffset",
		scrollTop: "pageYOffset"
	}, function(t, n) {
		var r = "pageYOffset" === n;
		Z.fn[t] = function(i) {
			return mt(this, function(t, i, o) {
				var s = B(t);
				return void 0 === o ? s ? s[n] : t[i] : void(s ? s.scrollTo(r ? e.pageXOffset : o, r ? o : e.pageYOffset) : t[i] = o)
			}, t, i, arguments.length, null)
		}
	}), Z.each(["top", "left"], function(e, t) {
		Z.cssHooks[t] = T(Q.pixelPosition, function(e, n) {
			return n ? (n = w(e, t), It.test(n) ? Z(e).position()[t] + "px" : n) : void 0
		})
	}), Z.each({
		Height: "height",
		Width: "width"
	}, function(e, t) {
		Z.each({
			padding: "inner" + e,
			content: t,
			"": "outer" + e
		}, function(n, r) {
			Z.fn[r] = function(r, i) {
				var o = arguments.length && (n || "boolean" != typeof r),
					s = n || (r === !0 || i === !0 ? "margin" : "border");
				return mt(this, function(t, n, r) {
					var i;
					return Z.isWindow(t) ? t.document.documentElement["client" + e] : 9 === t.nodeType ? (i = t.documentElement, Math.max(t.body["scroll" + e], i["scroll" + e], t.body["offset" + e], i["offset" + e], i["client" + e])) : void 0 === r ? Z.css(t, n, s) : Z.style(t, n, r, s)
				}, t, o ? r : void 0, o, null)
			}
		})
	}), Z.fn.size = function() {
		return this.length
	}, Z.fn.andSelf = Z.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function() {
		return Z
	});
	var Rn = e.jQuery,
		Wn = e.$;
	return Z.noConflict = function(t) {
		return e.$ === Z && (e.$ = Wn), t && e.jQuery === Z && (e.jQuery = Rn), Z
	}, typeof t === kt && (e.jQuery = e.$ = Z), Z
});
! function(t, e, n) {
	"use strict";

	function r(t) {
		return function() {
			var e, n, r = arguments[0],
				i = "[" + (t ? t + ":" : "") + r + "] ",
				o = arguments[1],
				a = arguments,
				s = function(t) {
					return "function" == typeof t ? t.toString().replace(/ \{[\s\S]*$/, "") : "undefined" == typeof t ? "undefined" : "string" != typeof t ? JSON.stringify(t) : t
				};
			for (e = i + o.replace(/\{\d+\}/g, function(t) {
				var e, n = +t.slice(1, -1);
				return n + 2 < a.length ? (e = a[n + 2], "function" == typeof e ? e.toString().replace(/ ?\{[\s\S]*$/, "") : "undefined" == typeof e ? "undefined" : "string" != typeof e ? L(e) : e) : t
			}), e = e + "\nhttp://errors.angularjs.org/1.2.27/" + (t ? t + "/" : "") + r, n = 2; n < arguments.length; n++) e = e + (2 == n ? "?" : "&") + "p" + (n - 2) + "=" + encodeURIComponent(s(arguments[n]));
			return new Error(e)
		}
	}
	function i(t) {
		if (null == t || k(t)) return !1;
		var e = t.length;
		return 1 === t.nodeType && e ? !0 : w(t) || Nr(t) || 0 === e || "number" == typeof e && e > 0 && e - 1 in t
	}
	function o(t, e, n) {
		var r;
		if (t) if (S(t)) for (r in t) "prototype" == r || "length" == r || "name" == r || t.hasOwnProperty && !t.hasOwnProperty(r) || e.call(n, t[r], r);
		else if (Nr(t) || i(t)) for (r = 0; r < t.length; r++) e.call(n, t[r], r);
		else if (t.forEach && t.forEach !== o) t.forEach(e, n);
		else for (r in t) t.hasOwnProperty(r) && e.call(n, t[r], r);
		return t
	}
	function a(t) {
		var e = [];
		for (var n in t) t.hasOwnProperty(n) && e.push(n);
		return e.sort()
	}
	function s(t, e, n) {
		for (var r = a(t), i = 0; i < r.length; i++) e.call(n, t[r[i]], r[i]);
		return r
	}
	function u(t) {
		return function(e, n) {
			t(n, e)
		}
	}
	function c() {
		for (var t, e = Mr.length; e;) {
			if (e--, t = Mr[e].charCodeAt(0), 57 == t) return Mr[e] = "A", Mr.join("");
			if (90 != t) return Mr[e] = String.fromCharCode(t + 1), Mr.join("");
			Mr[e] = "0"
		}
		return Mr.unshift("0"), Mr.join("")
	}
	function l(t, e) {
		e ? t.$$hashKey = e : delete t.$$hashKey
	}
	function f(t) {
		var e = t.$$hashKey;
		return o(arguments, function(e) {
			e !== t && o(e, function(e, n) {
				t[n] = e
			})
		}), l(t, e), t
	}
	function h(t) {
		return parseInt(t, 10)
	}
	function p(t, e) {
		return f(new(f(function() {}, {
			prototype: t
		})), e)
	}
	function $() {}
	function d(t) {
		return t
	}
	function v(t) {
		return function() {
			return t
		}
	}
	function g(t) {
		return "undefined" == typeof t
	}
	function m(t) {
		return "undefined" != typeof t
	}
	function y(t) {
		return null != t && "object" == typeof t
	}
	function w(t) {
		return "string" == typeof t
	}
	function b(t) {
		return "number" == typeof t
	}
	function x(t) {
		return "[object Date]" === Ar.call(t)
	}
	function S(t) {
		return "function" == typeof t
	}
	function C(t) {
		return "[object RegExp]" === Ar.call(t)
	}
	function k(t) {
		return t && t.document && t.location && t.alert && t.setInterval
	}
	function E(t) {
		return t && t.$evalAsync && t.$watch
	}
	function A(t) {
		return "[object File]" === Ar.call(t)
	}
	function O(t) {
		return "[object Blob]" === Ar.call(t)
	}
	function T(t) {
		return t && S(t.then)
	}
	function M(t) {
		return !(!t || !(t.nodeName || t.prop && t.attr && t.find))
	}
	function N(t, e, n) {
		var r = [];
		return o(t, function(t, i, o) {
			r.push(e.call(n, t, i, o))
		}), r
	}
	function P(t, e) {
		return -1 != j(t, e)
	}
	function j(t, e) {
		if (t.indexOf) return t.indexOf(e);
		for (var n = 0; n < t.length; n++) if (e === t[n]) return n;
		return -1
	}
	function D(t, e) {
		var n = j(t, e);
		return n >= 0 && t.splice(n, 1), e
	}
	function R(t, e, n, r) {
		if (k(t) || E(t)) throw Or("cpws", "Can't copy! Making copies of Window or Scope instances is not supported.");
		if (e) {
			if (t === e) throw Or("cpi", "Can't copy! Source and destination are identical.");
			if (n = n || [], r = r || [], y(t)) {
				var i = j(n, t);
				if (-1 !== i) return r[i];
				n.push(t), r.push(e)
			}
			var a;
			if (Nr(t)) {
				e.length = 0;
				for (var s = 0; s < t.length; s++) a = R(t[s], null, n, r), y(t[s]) && (n.push(t[s]), r.push(a)), e.push(a)
			} else {
				var u = e.$$hashKey;
				Nr(e) ? e.length = 0 : o(e, function(t, n) {
					delete e[n]
				});
				for (var c in t) a = R(t[c], null, n, r), y(t[c]) && (n.push(t[c]), r.push(a)), e[c] = a;
				l(e, u)
			}
		} else e = t, t && (Nr(t) ? e = R(t, [], n, r) : x(t) ? e = new Date(t.getTime()) : C(t) ? (e = new RegExp(t.source, t.toString().match(/[^\/]*$/)[0]), e.lastIndex = t.lastIndex) : y(t) && (e = R(t, {}, n, r)));
		return e
	}
	function _(t, e) {
		if (Nr(t)) {
			e = e || [];
			for (var n = 0; n < t.length; n++) e[n] = t[n]
		} else if (y(t)) {
			e = e || {};
			for (var r in t)!vr.call(t, r) || "$" === r.charAt(0) && "$" === r.charAt(1) || (e[r] = t[r])
		}
		return e || t
	}
	function q(t, e) {
		if (t === e) return !0;
		if (null === t || null === e) return !1;
		if (t !== t && e !== e) return !0;
		var r, i, o, a = typeof t,
			s = typeof e;
		if (a == s && "object" == a) {
			if (!Nr(t)) {
				if (x(t)) return x(e) ? isNaN(t.getTime()) && isNaN(e.getTime()) || t.getTime() === e.getTime() : !1;
				if (C(t) && C(e)) return t.toString() == e.toString();
				if (E(t) || E(e) || k(t) || k(e) || Nr(e)) return !1;
				o = {};
				for (i in t) if ("$" !== i.charAt(0) && !S(t[i])) {
					if (!q(t[i], e[i])) return !1;
					o[i] = !0
				}
				for (i in e) if (!o.hasOwnProperty(i) && "$" !== i.charAt(0) && e[i] !== n && !S(e[i])) return !1;
				return !0
			}
			if (!Nr(e)) return !1;
			if ((r = t.length) == e.length) {
				for (i = 0; r > i; i++) if (!q(t[i], e[i])) return !1;
				return !0
			}
		}
		return !1
	}
	function U(t, e, n) {
		return t.concat(kr.call(e, n))
	}
	function V(t, e) {
		return kr.call(t, e || 0)
	}
	function I(t, e) {
		var n = arguments.length > 2 ? V(arguments, 2) : [];
		return !S(e) || e instanceof RegExp ? e : n.length ? function() {
			return arguments.length ? e.apply(t, n.concat(kr.call(arguments, 0))) : e.apply(t, n)
		} : function() {
			return arguments.length ? e.apply(t, arguments) : e.call(t)
		}
	}
	function F(t, r) {
		var i = r;
		return "string" == typeof t && "$" === t.charAt(0) ? i = n : k(r) ? i = "$WINDOW" : r && e === r ? i = "$DOCUMENT" : E(r) && (i = "$SCOPE"), i
	}
	function L(t, e) {
		return "undefined" == typeof t ? n : JSON.stringify(t, F, e ? "  " : null)
	}
	function H(t) {
		return w(t) ? JSON.parse(t) : t
	}
	function B(t) {
		if ("function" == typeof t) t = !0;
		else if (t && 0 !== t.length) {
			var e = dr("" + t);
			t = !("f" == e || "0" == e || "false" == e || "no" == e || "n" == e || "[]" == e)
		} else t = !1;
		return t
	}
	function z(t) {
		t = br(t).clone();
		try {
			t.empty()
		} catch (e) {}
		var n = 3,
			r = br("<div>").append(t).html();
		try {
			return t[0].nodeType === n ? dr(r) : r.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/, function(t, e) {
				return "<" + dr(e)
			})
		} catch (e) {
			return dr(r)
		}
	}
	function W(t) {
		try {
			return decodeURIComponent(t)
		} catch (e) {}
	}
	function Q(t) {
		var e, n, r = {};
		return o((t || "").split("&"), function(t) {
			if (t && (e = t.replace(/\+/g, "%20").split("="), n = W(e[0]), m(n))) {
				var i = m(e[1]) ? W(e[1]) : !0;
				vr.call(r, n) ? Nr(r[n]) ? r[n].push(i) : r[n] = [r[n], i] : r[n] = i
			}
		}), r
	}
	function J(t) {
		var e = [];
		return o(t, function(t, n) {
			Nr(t) ? o(t, function(t) {
				e.push(X(n, !0) + (t === !0 ? "" : "=" + X(t, !0)))
			}) : e.push(X(n, !0) + (t === !0 ? "" : "=" + X(t, !0)))
		}), e.length ? e.join("&") : ""
	}
	function G(t) {
		return X(t, !0).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+")
	}
	function X(t, e) {
		return encodeURIComponent(t).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, e ? "%20" : "+")
	}
	function K(t, n) {
		function r(t) {
			t && s.push(t)
		}
		var i, a, s = [t],
			u = ["ng:app", "ng-app", "x-ng-app", "data-ng-app"],
			c = /\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;
		o(u, function(n) {
			u[n] = !0, r(e.getElementById(n)), n = n.replace(":", "\\:"), t.querySelectorAll && (o(t.querySelectorAll("." + n), r), o(t.querySelectorAll("." + n + "\\:"), r), o(t.querySelectorAll("[" + n + "]"), r))
		}), o(s, function(t) {
			if (!i) {
				var e = " " + t.className + " ",
					n = c.exec(e);
				n ? (i = t, a = (n[2] || "").replace(/\s+/g, ",")) : o(t.attributes, function(e) {
					!i && u[e.name] && (i = t, a = e.value)
				})
			}
		}), i && n(i, a ? [a] : [])
	}
	function Y(n, r) {
		var i = function() {
			if (n = br(n), n.injector()) {
				var t = n[0] === e ? "document" : z(n);
				throw Or("btstrpd", "App Already Bootstrapped with this Element '{0}'", t.replace(/</, "&lt;").replace(/>/, "&gt;"))
			}
			r = r || [], r.unshift(["$provide", function(t) {
				t.value("$rootElement", n)
			}]), r.unshift("ng");
			var i = je(r);
			return i.invoke(["$rootScope", "$rootElement", "$compile", "$injector", "$animate", function(t, e, n, r) {
				t.$apply(function() {
					e.data("$injector", r), n(e)(t)
				})
			}]), i
		}, a = /^NG_DEFER_BOOTSTRAP!/;
		return t && !a.test(t.name) ? i() : (t.name = t.name.replace(a, ""), void(Tr.resumeBootstrap = function(t) {
			o(t, function(t) {
				r.push(t)
			}), i()
		}))
	}
	function Z(t, e) {
		return e = e || "_", t.replace(Dr, function(t, n) {
			return (n ? e : "") + t.toLowerCase()
		})
	}
	function te() {
		xr = t.jQuery, xr && xr.fn.on ? (br = xr, f(xr.fn, {
			scope: Jr.scope,
			isolateScope: Jr.isolateScope,
			controller: Jr.controller,
			injector: Jr.injector,
			inheritedData: Jr.inheritedData
		}), le("remove", !0, !0, !1), le("empty", !1, !1, !1), le("html", !1, !1, !0)) : br = $e, Tr.element = br
	}
	function ee(t, e, n) {
		if (!t) throw Or("areq", "Argument '{0}' is {1}", e || "?", n || "required");
		return t
	}
	function ne(t, e, n) {
		return n && Nr(t) && (t = t[t.length - 1]), ee(S(t), e, "not a function, got " + (t && "object" == typeof t ? t.constructor.name || "Object" : typeof t)), t
	}
	function re(t, e) {
		if ("hasOwnProperty" === t) throw Or("badname", "hasOwnProperty is not a valid {0} name", e)
	}
	function ie(t, e, n) {
		if (!e) return t;
		for (var r, i = e.split("."), o = t, a = i.length, s = 0; a > s; s++) r = i[s], t && (t = (o = t)[r]);
		return !n && S(t) ? I(o, t) : t
	}
	function oe(t) {
		var e = t[0],
			n = t[t.length - 1];
		if (e === n) return br(e);
		var r = e,
			i = [r];
		do {
			if (r = r.nextSibling, !r) break;
			i.push(r)
		} while (r !== n);
		return br(i)
	}
	function ae(t) {
		function e(t, e, n) {
			return t[e] || (t[e] = n())
		}
		var n = r("$injector"),
			i = r("ng"),
			o = e(t, "angular", Object);
		return o.$$minErr = o.$$minErr || r, e(o, "module", function() {
			var t = {};
			return function(r, o, a) {
				var s = function(t, e) {
					if ("hasOwnProperty" === t) throw i("badname", "hasOwnProperty is not a valid {0} name", e)
				};
				return s(r, "module"), o && t.hasOwnProperty(r) && (t[r] = null), e(t, r, function() {
					function t(t, n, r) {
						return function() {
							return e[r || "push"]([t, n, arguments]), u
						}
					}
					if (!o) throw n("nomod", "Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.", r);
					var e = [],
						i = [],
						s = t("$injector", "invoke"),
						u = {
							_invokeQueue: e,
							_runBlocks: i,
							requires: o,
							name: r,
							provider: t("$provide", "provider"),
							factory: t("$provide", "factory"),
							service: t("$provide", "service"),
							value: t("$provide", "value"),
							constant: t("$provide", "constant", "unshift"),
							animation: t("$animateProvider", "register"),
							filter: t("$filterProvider", "register"),
							controller: t("$controllerProvider", "register"),
							directive: t("$compileProvider", "directive"),
							config: s,
							run: function(t) {
								return i.push(t), this
							}
						};
					return a && s(a), u
				})
			}
		})
	}
	function se(e) {
		f(e, {
			bootstrap: Y,
			copy: R,
			extend: f,
			equals: q,
			element: br,
			forEach: o,
			injector: je,
			noop: $,
			bind: I,
			toJson: L,
			fromJson: H,
			identity: d,
			isUndefined: g,
			isDefined: m,
			isString: w,
			isFunction: S,
			isObject: y,
			isNumber: b,
			isElement: M,
			isArray: Nr,
			version: Rr,
			isDate: x,
			lowercase: dr,
			uppercase: gr,
			callbacks: {
				counter: 0
			},
			$$minErr: r,
			$$csp: jr
		}), Sr = ae(t);
		try {
			Sr("ngLocale")
		} catch (n) {
			Sr("ngLocale", []).provider("$locale", nn)
		}
		Sr("ng", ["ngLocale"], ["$provide", function(t) {
			t.provider({
				$$sanitizeUri: Nn
			}), t.provider("$compile", Ie).directive({
				a: Pi,
				input: Hi,
				textarea: Hi,
				form: _i,
				script: Eo,
				select: To,
				style: No,
				option: Mo,
				ngBind: eo,
				ngBindHtml: ro,
				ngBindTemplate: no,
				ngClass: io,
				ngClassEven: ao,
				ngClassOdd: oo,
				ngCloak: so,
				ngController: uo,
				ngForm: qi,
				ngHide: wo,
				ngIf: fo,
				ngInclude: ho,
				ngInit: $o,
				ngNonBindable: vo,
				ngPluralize: go,
				ngRepeat: mo,
				ngShow: yo,
				ngStyle: bo,
				ngSwitch: xo,
				ngSwitchWhen: So,
				ngSwitchDefault: Co,
				ngOptions: Oo,
				ngTransclude: ko,
				ngModel: Gi,
				ngList: Yi,
				ngChange: Xi,
				required: Ki,
				ngRequired: Ki,
				ngValue: to
			}).directive({
				ngInclude: po
			}).directive(ji).directive(co), t.provider({
				$anchorScroll: De,
				$animate: ri,
				$browser: qe,
				$cacheFactory: Ue,
				$controller: He,
				$document: Be,
				$exceptionHandler: ze,
				$filter: Ln,
				$interpolate: tn,
				$interval: en,
				$http: Xe,
				$httpBackend: Ye,
				$location: vn,
				$log: gn,
				$parse: En,
				$rootScope: Mn,
				$q: An,
				$sce: _n,
				$sceDelegate: Rn,
				$sniffer: qn,
				$templateCache: Ve,
				$timeout: Un,
				$window: Fn,
				$$rAF: Tn,
				$$asyncCallback: Re
			})
		}])
	}
	function ue() {
		return ++qr
	}
	function ce(t) {
		return t.replace(Ir, function(t, e, n, r) {
			return r ? n.toUpperCase() : n
		}).replace(Fr, "Moz$1")
	}
	function le(t, e, n, r) {
		function i(t) {
			var i, a, s, u, c, l, f, h = n && t ? [this.filter(t)] : [this],
				p = e;
			if (!r || null != t) for (; h.length;) for (i = h.shift(), a = 0, s = i.length; s > a; a++) for (u = br(i[a]), p ? u.triggerHandler("$destroy") : p = !p, c = 0, l = (f = u.children()).length; l > c; c++) h.push(xr(f[c]));
			return o.apply(this, arguments)
		}
		var o = xr.fn[t];
		o = o.$original || o, i.$original = o, xr.fn[t] = i
	}
	function fe(t) {
		return !Br.test(t)
	}
	function he(t, e) {
		var n, r, i, o, a, s, u = e.createDocumentFragment(),
			c = [];
		if (fe(t)) c.push(e.createTextNode(t));
		else {
			for (n = u.appendChild(e.createElement("div")), r = (zr.exec(t) || ["", ""])[1].toLowerCase(), i = Qr[r] || Qr._default, n.innerHTML = "<div>&#160;</div>" + i[1] + t.replace(Wr, "<$1></$2>") + i[2], n.removeChild(n.firstChild), o = i[0]; o--;) n = n.lastChild;
			for (a = 0, s = n.childNodes.length; s > a; ++a) c.push(n.childNodes[a]);
			n = u.firstChild, n.textContent = ""
		}
		return u.textContent = "", u.innerHTML = "", c
	}
	function pe(t, n) {
		n = n || e;
		var r;
		return (r = Hr.exec(t)) ? [n.createElement(r[1])] : he(t, n)
	}
	function $e(t) {
		if (t instanceof $e) return t;
		if (w(t) && (t = Pr(t)), !(this instanceof $e)) {
			if (w(t) && "<" != t.charAt(0)) throw Lr("nosel", "Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");
			return new $e(t)
		}
		if (w(t)) {
			Ce(this, pe(t));
			var n = br(e.createDocumentFragment());
			n.append(this)
		} else Ce(this, t)
	}
	function de(t) {
		return t.cloneNode(!0)
	}
	function ve(t) {
		me(t);
		for (var e = 0, n = t.childNodes || []; e < n.length; e++) ve(n[e])
	}
	function ge(t, e, n, r) {
		if (m(r)) throw Lr("offargs", "jqLite#off() does not support the `selector` argument");
		var i = ye(t, "events"),
			a = ye(t, "handle");
		a && (g(e) ? o(i, function(e, n) {
			Vr(t, n, e), delete i[n]
		}) : o(e.split(" "), function(e) {
			g(n) ? (Vr(t, e, i[e]), delete i[e]) : D(i[e] || [], n)
		}))
	}
	function me(t, e) {
		var r = t.ng339,
			i = _r[r];
		if (i) {
			if (e) return void delete _r[r].data[e];
			i.handle && (i.events.$destroy && i.handle({}, "$destroy"), ge(t)), delete _r[r], t.ng339 = n
		}
	}
	function ye(t, e, n) {
		var r = t.ng339,
			i = _r[r || -1];
		return m(n) ? (i || (t.ng339 = r = ue(), i = _r[r] = {}), void(i[e] = n)) : i && i[e]
	}
	function we(t, e, n) {
		var r = ye(t, "data"),
			i = m(n),
			o = !i && m(e),
			a = o && !y(e);
		if (r || a || ye(t, "data", r = {}), i) r[e] = n;
		else {
			if (!o) return r;
			if (a) return r && r[e];
			f(r, e)
		}
	}
	function be(t, e) {
		return t.getAttribute ? (" " + (t.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").indexOf(" " + e + " ") > -1 : !1
	}
	function xe(t, e) {
		e && t.setAttribute && o(e.split(" "), function(e) {
			t.setAttribute("class", Pr((" " + (t.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").replace(" " + Pr(e) + " ", " ")))
		})
	}
	function Se(t, e) {
		if (e && t.setAttribute) {
			var n = (" " + (t.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ");
			o(e.split(" "), function(t) {
				t = Pr(t), -1 === n.indexOf(" " + t + " ") && (n += t + " ")
			}), t.setAttribute("class", Pr(n))
		}
	}
	function Ce(t, e) {
		if (e) {
			e = e.nodeName || !m(e.length) || k(e) ? [e] : e;
			for (var n = 0; n < e.length; n++) t.push(e[n])
		}
	}
	function ke(t, e) {
		return Ee(t, "$" + (e || "ngController") + "Controller")
	}
	function Ee(t, e, r) {
		9 == t.nodeType && (t = t.documentElement);
		for (var i = Nr(e) ? e : [e]; t;) {
			for (var o = 0, a = i.length; a > o; o++) if ((r = br.data(t, i[o])) !== n) return r;
			t = t.parentNode || 11 === t.nodeType && t.host
		}
	}
	function Ae(t) {
		for (var e = 0, n = t.childNodes; e < n.length; e++) ve(n[e]);
		for (; t.firstChild;) t.removeChild(t.firstChild)
	}
	function Oe(t, e) {
		var n = Gr[e.toLowerCase()];
		return n && Xr[t.nodeName] && n
	}
	function Te(t, n) {
		var r = function(r, i) {
			if (r.preventDefault || (r.preventDefault = function() {
				r.returnValue = !1
			}), r.stopPropagation || (r.stopPropagation = function() {
				r.cancelBubble = !0
			}), r.target || (r.target = r.srcElement || e), g(r.defaultPrevented)) {
				var a = r.preventDefault;
				r.preventDefault = function() {
					r.defaultPrevented = !0, a.call(r)
				}, r.defaultPrevented = !1
			}
			r.isDefaultPrevented = function() {
				return r.defaultPrevented || r.returnValue === !1
			};
			var s = _(n[i || r.type] || []);
			o(s, function(e) {
				e.call(t, r)
			}), 8 >= wr ? (r.preventDefault = null, r.stopPropagation = null, r.isDefaultPrevented = null) : (delete r.preventDefault, delete r.stopPropagation, delete r.isDefaultPrevented)
		};
		return r.elem = t, r
	}
	function Me(t, e) {
		var r, i = typeof t;
		return "function" == i || "object" == i && null !== t ? "function" == typeof(r = t.$$hashKey) ? r = t.$$hashKey() : r === n && (r = t.$$hashKey = (e || c)()) : r = t, i + ":" + r
	}
	function Ne(t, e) {
		if (e) {
			var n = 0;
			this.nextUid = function() {
				return ++n
			}
		}
		o(t, this.put, this)
	}
	function Pe(t) {
		var e, n, r, i;
		return "function" == typeof t ? (e = t.$inject) || (e = [], t.length && (n = t.toString().replace(ti, ""), r = n.match(Kr), o(r[1].split(Yr), function(t) {
			t.replace(Zr, function(t, n, r) {
				e.push(r)
			})
		})), t.$inject = e) : Nr(t) ? (i = t.length - 1, ne(t[i], "fn"), e = t.slice(0, i)) : ne(t, "fn", !0), e
	}
	function je(t) {
		function e(t) {
			return function(e, n) {
				return y(e) ? void o(e, u(t)) : t(e, n)
			}
		}
		function n(t, e) {
			if (re(t, "service"), (S(e) || Nr(e)) && (e = b.instantiate(e)), !e.$get) throw ei("pget", "Provider '{0}' must define $get factory method.", t);
			return m[t + p] = e
		}
		function r(t, e) {
			return n(t, {
				$get: e
			})
		}
		function i(t, e) {
			return r(t, ["$injector", function(t) {
				return t.instantiate(e)
			}])
		}
		function a(t, e) {
			return r(t, v(e))
		}
		function s(t, e) {
			re(t, "constant"), m[t] = e, x[t] = e
		}
		function c(t, e) {
			var n = b.get(t + p),
				r = n.$get;
			n.$get = function() {
				var t = C.invoke(r, n);
				return C.invoke(e, null, {
					$delegate: t
				})
			}
		}
		function l(t) {
			var e, n, r, i, a = [];
			return o(t, function(t) {
				if (!g.get(t)) {
					g.put(t, !0);
					try {
						if (w(t)) for (e = Sr(t), a = a.concat(l(e.requires)).concat(e._runBlocks), n = e._invokeQueue, r = 0, i = n.length; i > r; r++) {
							var o = n[r],
								s = b.get(o[0]);
							s[o[1]].apply(s, o[2])
						} else S(t) ? a.push(b.invoke(t)) : Nr(t) ? a.push(b.invoke(t)) : ne(t, "module")
					} catch (u) {
						throw Nr(t) && (t = t[t.length - 1]), u.message && u.stack && -1 == u.stack.indexOf(u.message) && (u = u.message + "\n" + u.stack), ei("modulerr", "Failed to instantiate module {0} due to:\n{1}", t, u.stack || u.message || u)
					}
				}
			}), a
		}
		function f(t, e) {
			function n(n) {
				if (t.hasOwnProperty(n)) {
					if (t[n] === h) throw ei("cdep", "Circular dependency found: {0}", n + " <- " + d.join(" <- "));
					return t[n]
				}
				try {
					return d.unshift(n), t[n] = h, t[n] = e(n)
				} catch (r) {
					throw t[n] === h && delete t[n], r
				} finally {
					d.shift()
				}
			}
			function r(t, e, r) {
				var i, o, a, s = [],
					u = Pe(t);
				for (o = 0, i = u.length; i > o; o++) {
					if (a = u[o], "string" != typeof a) throw ei("itkn", "Incorrect injection token! Expected service name as string, got {0}", a);
					s.push(r && r.hasOwnProperty(a) ? r[a] : n(a))
				}
				return Nr(t) && (t = t[i]), t.apply(e, s)
			}
			function i(t, e) {
				var n, i, o = function() {};
				return o.prototype = (Nr(t) ? t[t.length - 1] : t).prototype, n = new o, i = r(t, n, e), y(i) || S(i) ? i : n
			}
			return {
				invoke: r,
				instantiate: i,
				get: n,
				annotate: Pe,
				has: function(e) {
					return m.hasOwnProperty(e + p) || t.hasOwnProperty(e)
				}
			}
		}
		var h = {}, p = "Provider",
			d = [],
			g = new Ne([], !0),
			m = {
				$provide: {
					provider: e(n),
					factory: e(r),
					service: e(i),
					value: e(a),
					constant: e(s),
					decorator: c
				}
			}, b = m.$injector = f(m, function() {
				throw ei("unpr", "Unknown provider: {0}", d.join(" <- "))
			}),
			x = {}, C = x.$injector = f(x, function(t) {
				var e = b.get(t + p);
				return C.invoke(e.$get, e)
			});
		return o(l(t), function(t) {
			C.invoke(t || $)
		}), C
	}
	function De() {
		var t = !0;
		this.disableAutoScrolling = function() {
			t = !1
		}, this.$get = ["$window", "$location", "$rootScope", function(e, n, r) {
			function i(t) {
				var e = null;
				return o(t, function(t) {
					e || "a" !== dr(t.nodeName) || (e = t)
				}), e
			}
			function a() {
				var t, r = n.hash();
				r ? (t = s.getElementById(r)) ? t.scrollIntoView() : (t = i(s.getElementsByName(r))) ? t.scrollIntoView() : "top" === r && e.scrollTo(0, 0) : e.scrollTo(0, 0)
			}
			var s = e.document;
			return t && r.$watch(function() {
				return n.hash()
			}, function() {
				r.$evalAsync(a)
			}), a
		}]
	}
	function Re() {
		this.$get = ["$$rAF", "$timeout", function(t, e) {
			return t.supported ? function(e) {
				return t(e)
			} : function(t) {
				return e(t, 0, !1)
			}
		}]
	}
	function _e(t, e, r, i) {
		function a(t) {
			try {
				t.apply(null, V(arguments, 1))
			} finally {
				if (m--, 0 === m) for (; y.length;) try {
					y.pop()()
				} catch (e) {
					r.error(e)
				}
			}
		}
		function s(t, e) {
			! function n() {
				o(x, function(t) {
					t()
				}), b = e(n, t)
			}()
		}
		function u() {
			S != c.url() && (S = c.url(), o(E, function(t) {
				t(c.url())
			}))
		}
		var c = this,
			l = e[0],
			f = t.location,
			h = t.history,
			p = t.setTimeout,
			d = t.clearTimeout,
			v = {};
		c.isMock = !1;
		var m = 0,
			y = [];
		c.$$completeOutstandingRequest = a, c.$$incOutstandingRequestCount = function() {
			m++
		}, c.notifyWhenNoOutstandingRequests = function(t) {
			o(x, function(t) {
				t()
			}), 0 === m ? t() : y.push(t)
		};
		var b, x = [];
		c.addPollFn = function(t) {
			return g(b) && s(100, p), x.push(t), t
		};
		var S = f.href,
			C = e.find("base"),
			k = null;
		c.url = function(e, n) {
			if (f !== t.location && (f = t.location), h !== t.history && (h = t.history), e) {
				if (S == e) return;
				var r = S && un(S) === un(e);
				return S = e, !r && i.history ? n ? h.replaceState(null, "", e) : (h.pushState(null, "", e), C.attr("href", C.attr("href"))) : (r || (k = e), n ? f.replace(e) : f.href = e), c
			}
			return k || f.href.replace(/%27/g, "'")
		};
		var E = [],
			A = !1;
		c.onUrlChange = function(e) {
			return A || (i.history && br(t).on("popstate", u), i.hashchange ? br(t).on("hashchange", u) : c.addPollFn(u), A = !0), E.push(e), e
		}, c.$$checkUrlChange = u, c.baseHref = function() {
			var t = C.attr("href");
			return t ? t.replace(/^(https?\:)?\/\/[^\/]*/, "") : ""
		};
		var O = {}, T = "",
			M = c.baseHref();
		c.cookies = function(t, e) {
			var i, o, a, s, u;
			if (!t) {
				if (l.cookie !== T) for (T = l.cookie, o = T.split("; "), O = {}, s = 0; s < o.length; s++) a = o[s], u = a.indexOf("="), u > 0 && (t = unescape(a.substring(0, u)), O[t] === n && (O[t] = unescape(a.substring(u + 1))));
				return O
			}
			e === n ? l.cookie = escape(t) + "=;path=" + M + ";expires=Thu, 01 Jan 1970 00:00:00 GMT" : w(e) && (i = (l.cookie = escape(t) + "=" + escape(e) + ";path=" + M).length + 1, i > 4096 && r.warn("Cookie '" + t + "' possibly not set or overflowed because it was too large (" + i + " > 4096 bytes)!"))
		}, c.defer = function(t, e) {
			var n;
			return m++, n = p(function() {
				delete v[n], a(t)
			}, e || 0), v[n] = !0, n
		}, c.defer.cancel = function(t) {
			return v[t] ? (delete v[t], d(t), a($), !0) : !1
		}
	}
	function qe() {
		this.$get = ["$window", "$log", "$sniffer", "$document", function(t, e, n, r) {
			return new _e(t, r, e, n)
		}]
	}
	function Ue() {
		this.$get = function() {
			function t(t, n) {
				function i(t) {
					t != h && (p ? p == t && (p = t.n) : p = t, o(t.n, t.p), o(t, h), h = t, h.n = null)
				}
				function o(t, e) {
					t != e && (t && (t.p = e), e && (e.n = t))
				}
				if (t in e) throw r("$cacheFactory")("iid", "CacheId '{0}' is already taken!", t);
				var a = 0,
					s = f({}, n, {
						id: t
					}),
					u = {}, c = n && n.capacity || Number.MAX_VALUE,
					l = {}, h = null,
					p = null;
				return e[t] = {
					put: function(t, e) {
						if (c < Number.MAX_VALUE) {
							var n = l[t] || (l[t] = {
								key: t
							});
							i(n)
						}
						if (!g(e)) return t in u || a++, u[t] = e, a > c && this.remove(p.key), e
					},
					get: function(t) {
						if (c < Number.MAX_VALUE) {
							var e = l[t];
							if (!e) return;
							i(e)
						}
						return u[t]
					},
					remove: function(t) {
						if (c < Number.MAX_VALUE) {
							var e = l[t];
							if (!e) return;
							e == h && (h = e.p), e == p && (p = e.n), o(e.n, e.p), delete l[t]
						}
						delete u[t], a--
					},
					removeAll: function() {
						u = {}, a = 0, l = {}, h = p = null
					},
					destroy: function() {
						u = null, s = null, l = null, delete e[t]
					},
					info: function() {
						return f({}, s, {
							size: a
						})
					}
				}
			}
			var e = {};
			return t.info = function() {
				var t = {};
				return o(e, function(e, n) {
					t[n] = e.info()
				}), t
			}, t.get = function(t) {
				return e[t]
			}, t
		}
	}
	function Ve() {
		this.$get = ["$cacheFactory", function(t) {
			return t("templates")
		}]
	}
	function Ie(t, r) {
		var i = {}, a = "Directive",
			s = /^\s*directive\:\s*([\d\w_\-]+)\s+(.*)$/,
			c = /(([\d\w_\-]+)(?:\:([^;]+))?;?)/,
			l = /^(on[a-z]+|formaction)$/;
		this.directive = function h(e, n) {
			return re(e, "directive"), w(e) ? (ee(n, "directiveFactory"), i.hasOwnProperty(e) || (i[e] = [], t.factory(e + a, ["$injector", "$exceptionHandler", function(t, n) {
				var r = [];
				return o(i[e], function(i, o) {
					try {
						var a = t.invoke(i);
						S(a) ? a = {
							compile: v(a)
						} : !a.compile && a.link && (a.compile = v(a.link)), a.priority = a.priority || 0, a.index = o, a.name = a.name || e, a.require = a.require || a.controller && a.name, a.restrict = a.restrict || "A", r.push(a)
					} catch (s) {
						n(s)
					}
				}), r
			}])), i[e].push(n)) : o(e, u(h)), this
		}, this.aHrefSanitizationWhitelist = function(t) {
			return m(t) ? (r.aHrefSanitizationWhitelist(t), this) : r.aHrefSanitizationWhitelist()
		}, this.imgSrcSanitizationWhitelist = function(t) {
			return m(t) ? (r.imgSrcSanitizationWhitelist(t), this) : r.imgSrcSanitizationWhitelist()
		}, this.$get = ["$injector", "$interpolate", "$exceptionHandler", "$http", "$templateCache", "$parse", "$controller", "$rootScope", "$document", "$sce", "$animate", "$$sanitizeUri", function(t, r, u, h, $, v, g, m, b, x, C, k) {
			function E(t, e, n, r, i) {
				t instanceof br || (t = br(t)), o(t, function(e, n) {
					3 == e.nodeType && e.nodeValue.match(/\S+/) && (t[n] = e = br(e).wrap("<span></span>").parent()[0])
				});
				var a = O(t, e, t, n, r, i);
				return A(t, "ng-scope"),
				function(e, n, r, i) {
					ee(e, "scope");
					var s = n ? Jr.clone.call(t) : t;
					o(r, function(t, e) {
						s.data("$" + e + "Controller", t)
					});
					for (var u = 0, c = s.length; c > u; u++) {
						var l = s[u],
							f = l.nodeType;
						(1 === f || 9 === f) && s.eq(u).data("$scope", e)
					}
					return n && n(s, e), a && a(e, s, s, i), s
				}
			}
			function A(t, e) {
				try {
					t.addClass(e)
				} catch (n) {}
			}
			function O(t, e, r, i, o, a) {
				function s(t, r, i, o) {
					var a, s, u, c, l, f, h, p, d = r.length,
						v = new Array(d);
					for (l = 0; d > l; l++) v[l] = r[l];
					for (l = 0, h = 0, f = $.length; f > l; h++) u = v[h], a = $[l++], s = $[l++], a ? (a.scope ? (c = t.$new(), br.data(u, "$scope", c)) : c = t, p = a.transcludeOnThisElement ? T(t, a.transclude, o) : !a.templateOnThisElement && o ? o : !o && e ? T(t, e) : null, a(s, c, u, i, p)) : s && s(t, u.childNodes, n, o)
				}
				for (var u, c, l, f, h, p, $ = [], d = 0; d < t.length; d++) u = new G, c = M(t[d], [], u, 0 === d ? i : n, o), l = c.length ? j(c, t[d], u, e, r, null, [], [], a) : null, l && l.scope && A(u.$$element, "ng-scope"), h = l && l.terminal || !(f = t[d].childNodes) || !f.length ? null : O(f, l ? (l.transcludeOnThisElement || !l.templateOnThisElement) && l.transclude : e), $.push(l, h), p = p || l || h, a = null;
				return p ? s : null
			}
			function T(t, e, n) {
				var r = function(r, i, o) {
					var a = !1;
					r || (r = t.$new(), r.$$transcluded = !0, a = !0);
					var s = e(r, i, o, n);
					return a && s.on("$destroy", function() {
						r.$destroy()
					}), s
				};
				return r
			}
			function M(t, e, n, r, i) {
				var o, a, u = t.nodeType,
					l = n.$attr;
				switch (u) {
					case 1:
						R(e, Fe(Cr(t).toLowerCase()), "E", r, i);
						for (var f, h, p, $, d, v, g = t.attributes, m = 0, y = g && g.length; y > m; m++) {
							var b = !1,
								x = !1;
							if (f = g[m], !wr || wr >= 8 || f.specified) {
								h = f.name, d = Pr(f.value), $ = Fe(h), (v = te.test($)) && (h = Z($.substr(6), "-"));
								var S = $.replace(/(Start|End)$/, "");
								$ === S + "Start" && (b = h, x = h.substr(0, h.length - 5) + "end", h = h.substr(0, h.length - 6)), p = Fe(h.toLowerCase()), l[p] = h, (v || !n.hasOwnProperty(p)) && (n[p] = d, Oe(t, p) && (n[p] = !0)), W(t, e, d, p), R(e, p, "A", r, i, b, x)
							}
						}
						if (a = t.className, w(a) && "" !== a) for (; o = c.exec(a);) p = Fe(o[2]), R(e, p, "C", r, i) && (n[p] = Pr(o[3])), a = a.substr(o.index + o[0].length);
						break;
					case 3:
						H(e, t.nodeValue);
						break;
					case 8:
						try {
							o = s.exec(t.nodeValue), o && (p = Fe(o[1]), R(e, p, "M", r, i) && (n[p] = Pr(o[2])))
						} catch (C) {}
				}
				return e.sort(F), e
			}
			function N(t, e, n) {
				var r = [],
					i = 0;
				if (e && t.hasAttribute && t.hasAttribute(e)) {
					do {
						if (!t) throw ii("uterdir", "Unterminated attribute, found '{0}' but no matching '{1}' found.", e, n);
						1 == t.nodeType && (t.hasAttribute(e) && i++, t.hasAttribute(n) && i--), r.push(t), t = t.nextSibling
					} while (i > 0)
				} else r.push(t);
				return br(r)
			}
			function P(t, e, n) {
				return function(r, i, o, a, s) {
					return i = N(i[0], e, n), t(r, i, o, a, s)
				}
			}
			function j(t, i, a, s, c, l, f, h, p) {
				function $(t, e, n, r) {
					t && (n && (t = P(t, n, r)), t.require = x.require, t.directiveName = C, (F === x || x.$$isolateScope) && (t = J(t, {
						isolateScope: !0
					})), f.push(t)), e && (n && (e = P(e, n, r)), e.require = x.require, e.directiveName = C, (F === x || x.$$isolateScope) && (e = J(e, {
						isolateScope: !0
					})), h.push(e))
				}
				function d(t, e, n, r) {
					var i, a = "data",
						s = !1;
					if (w(e)) {
						for (;
						"^" == (i = e.charAt(0)) || "?" == i;) e = e.substr(1), "^" == i && (a = "inheritedData"), s = s || "?" == i;
						if (i = null, r && "data" === a && (i = r[e]), i = i || n[a]("$" + e + "Controller"), !i && !s) throw ii("ctreq", "Controller '{0}', required by directive '{1}', can't be found!", e, t);
						return i
					}
					return Nr(e) && (i = [], o(e, function(e) {
						i.push(d(t, e, n, r))
					})), i
				}
				function m(t, e, s, c, l) {
					function p(t, e) {
						var r;
						return arguments.length < 2 && (e = t, t = n), K && (r = k), l(t, e, r)
					}
					var $, m, y, w, b, x, S, C, k = {};
					if ($ = i === s ? a : _(a, new G(br(s), a.$attr)), m = $.$$element, F) {
						var E = /^\s*([@=&])(\??)\s*(\w*)\s*$/;
						S = e.$new(!0), !H || H !== F && H !== F.$$originalDirective ? m.data("$isolateScopeNoTemplate", S) : m.data("$isolateScope", S), A(m, "ng-isolate-scope"), o(F.scope, function(t, n) {
							var i, o, a, s, u = t.match(E) || [],
								c = u[3] || n,
								l = "?" == u[2],
								f = u[1];
							switch (S.$$isolateBindings[n] = f + c, f) {
								case "@":
									$.$observe(c, function(t) {
										S[n] = t
									}), $.$$observers[c].$$scope = e, $[c] && (S[n] = r($[c])(e));
									break;
								case "=":
									if (l && !$[c]) return;
									o = v($[c]), s = o.literal ? q : function(t, e) {
										return t === e || t !== t && e !== e
									}, a = o.assign || function() {
										throw i = S[n] = o(e), ii("nonassign", "Expression '{0}' used with directive '{1}' is non-assignable!", $[c], F.name)
									}, i = S[n] = o(e), S.$watch(function() {
										var t = o(e);
										return s(t, S[n]) || (s(t, i) ? a(e, t = S[n]) : S[n] = t), i = t
									}, null, o.literal);
									break;
								case "&":
									o = v($[c]), S[n] = function(t) {
										return o(e, t)
									};
									break;
								default:
									throw ii("iscp", "Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}", F.name, n, t)
							}
						})
					}
					for (C = l && p, R && o(R, function(t) {
						var n, r = {
							$scope: t === F || t.$$isolateScope ? S : e,
							$element: m,
							$attrs: $,
							$transclude: C
						};
						x = t.controller, "@" == x && (x = $[t.name]), n = g(x, r), k[t.name] = n, K || m.data("$" + t.name + "Controller", n), t.controllerAs && (r.$scope[t.controllerAs] = n)
					}), y = 0, w = f.length; w > y; y++) try {
						b = f[y], b(b.isolateScope ? S : e, m, $, b.require && d(b.directiveName, b.require, m, k), C)
					} catch (O) {
						u(O, z(m))
					}
					var T = e;
					for (F && (F.template || null === F.templateUrl) && (T = S), t && t(T, s.childNodes, n, l), y = h.length - 1; y >= 0; y--) try {
						b = h[y], b(b.isolateScope ? S : e, m, $, b.require && d(b.directiveName, b.require, m, k), C)
					} catch (O) {
						u(O, z(m))
					}
				}
				p = p || {};
				for (var b, x, C, k, O, T, j = -Number.MAX_VALUE, R = p.controllerDirectives, F = p.newIsolateScopeDirective, H = p.templateDirective, B = p.nonTlbTranscludeDirective, W = !1, X = !1, K = p.hasElementTranscludeDirective, Z = a.$$element = br(i), te = l, ee = s, ne = 0, re = t.length; re > ne; ne++) {
					x = t[ne];
					var ie = x.$$start,
						oe = x.$$end;
					if (ie && (Z = N(i, ie, oe)), k = n, j > x.priority) break;
					if ((T = x.scope) && (b = b || x, x.templateUrl || (L("new/isolated scope", F, x, Z), y(T) && (F = x))), C = x.name, !x.templateUrl && x.controller && (T = x.controller, R = R || {}, L("'" + C + "' controller", R[C], x, Z), R[C] = x), (T = x.transclude) && (W = !0, x.$$tlb || (L("transclusion", B, x, Z), B = x), "element" == T ? (K = !0, j = x.priority, k = Z, Z = a.$$element = br(e.createComment(" " + C + ": " + a[C] + " ")), i = Z[0], Q(c, V(k), i), ee = E(k, s, j, te && te.name, {
						nonTlbTranscludeDirective: B
					})) : (k = br(de(i)).contents(), Z.empty(), ee = E(k, s))), x.template) if (X = !0, L("template", H, x, Z), H = x, T = S(x.template) ? x.template(Z, a) : x.template, T = Y(T), x.replace) {
						if (te = x, k = fe(T) ? [] : br(Pr(T)), i = k[0], 1 != k.length || 1 !== i.nodeType) throw ii("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", C, "");
						Q(c, Z, i);
						var ae = {
							$attr: {}
						}, se = M(i, [], ae),
							ue = t.splice(ne + 1, t.length - (ne + 1));
						F && D(se), t = t.concat(se).concat(ue), U(a, ae), re = t.length
					} else Z.html(T);
					if (x.templateUrl) X = !0, L("template", H, x, Z), H = x, x.replace && (te = x), m = I(t.splice(ne, t.length - ne), Z, a, c, W && ee, f, h, {
						controllerDirectives: R,
						newIsolateScopeDirective: F,
						templateDirective: H,
						nonTlbTranscludeDirective: B
					}), re = t.length;
					else if (x.compile) try {
						O = x.compile(Z, a, ee), S(O) ? $(null, O, ie, oe) : O && $(O.pre, O.post, ie, oe)
					} catch (ce) {
						u(ce, z(Z))
					}
					x.terminal && (m.terminal = !0, j = Math.max(j, x.priority))
				}
				return m.scope = b && b.scope === !0, m.transcludeOnThisElement = W, m.templateOnThisElement = X, m.transclude = ee, p.hasElementTranscludeDirective = K, m
			}
			function D(t) {
				for (var e = 0, n = t.length; n > e; e++) t[e] = p(t[e], {
					$$isolateScope: !0
				})
			}
			function R(e, r, o, s, c, l, f) {
				if (r === c) return null;
				var h = null;
				if (i.hasOwnProperty(r)) for (var $, d = t.get(r + a), v = 0, g = d.length; g > v; v++) try {
					$ = d[v], (s === n || s > $.priority) && -1 != $.restrict.indexOf(o) && (l && ($ = p($, {
						$$start: l,
						$$end: f
					})), e.push($), h = $)
				} catch (m) {
					u(m)
				}
				return h
			}
			function U(t, e) {
				var n = e.$attr,
					r = t.$attr,
					i = t.$$element;
				o(t, function(r, i) {
					"$" != i.charAt(0) && (e[i] && e[i] !== r && (r += ("style" === i ? ";" : " ") + e[i]), t.$set(i, r, !0, n[i]))
				}), o(e, function(e, o) {
					"class" == o ? (A(i, e), t["class"] = (t["class"] ? t["class"] + " " : "") + e) : "style" == o ? (i.attr("style", i.attr("style") + ";" + e), t.style = (t.style ? t.style + ";" : "") + e) : "$" == o.charAt(0) || t.hasOwnProperty(o) || (t[o] = e, r[o] = n[o])
				})
			}
			function I(t, e, n, r, i, a, s, u) {
				var c, l, p = [],
					d = e[0],
					v = t.shift(),
					g = f({}, v, {
						templateUrl: null,
						transclude: null,
						replace: null,
						$$originalDirective: v
					}),
					m = S(v.templateUrl) ? v.templateUrl(e, n) : v.templateUrl;
				return e.empty(), h.get(x.getTrustedResourceUrl(m), {
					cache: $
				}).success(function(f) {
					var h, $, w, b;
					if (f = Y(f), v.replace) {
						if (w = fe(f) ? [] : br(Pr(f)), h = w[0], 1 != w.length || 1 !== h.nodeType) throw ii("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", v.name, m);
						$ = {
							$attr: {}
						}, Q(r, e, h);
						var x = M(h, [], $);
						y(v.scope) && D(x), t = x.concat(t), U(n, $)
					} else h = d, e.html(f);
					for (t.unshift(g), c = j(t, h, n, i, e, v, a, s, u), o(r, function(t, n) {
						t == h && (r[n] = e[0])
					}), l = O(e[0].childNodes, i); p.length;) {
						var S = p.shift(),
							C = p.shift(),
							k = p.shift(),
							E = p.shift(),
							N = e[0];
						if (C !== d) {
							var P = C.className;
							u.hasElementTranscludeDirective && v.replace || (N = de(h)), Q(k, br(C), N), A(br(N), P)
						}
						b = c.transcludeOnThisElement ? T(S, c.transclude, E) : E, c(l, S, N, r, b)
					}
					p = null
				}).error(function(t, e, n, r) {
					throw ii("tpload", "Failed to load template: {0}", r.url)
				}),
				function(t, e, n, r, i) {
					var o = i;
					p ? (p.push(e), p.push(n), p.push(r), p.push(o)) : (c.transcludeOnThisElement && (o = T(e, c.transclude, i)), c(l, e, n, r, o))
				}
			}
			function F(t, e) {
				var n = e.priority - t.priority;
				return 0 !== n ? n : t.name !== e.name ? t.name < e.name ? -1 : 1 : t.index - e.index
			}
			function L(t, e, n, r) {
				if (e) throw ii("multidir", "Multiple directives [{0}, {1}] asking for {2} on: {3}", e.name, n.name, t, z(r))
			}
			function H(t, e) {
				var n = r(e, !0);
				n && t.push({
					priority: 0,
					compile: function(t) {
						var e = t.parent(),
							r = e.length;
						return r && A(t.parent(), "ng-binding"),
						function(t, e) {
							var i = e.parent(),
								o = i.data("$binding") || [];
							o.push(n), i.data("$binding", o), r || A(i, "ng-binding"), t.$watch(n, function(t) {
								e[0].nodeValue = t
							})
						}
					}
				})
			}
			function B(t, e) {
				if ("srcdoc" == e) return x.HTML;
				var n = Cr(t);
				return "xlinkHref" == e || "FORM" == n && "action" == e || "IMG" != n && ("src" == e || "ngSrc" == e) ? x.RESOURCE_URL : void 0
			}
			function W(t, e, n, i) {
				var o = r(n, !0);
				if (o) {
					if ("multiple" === i && "SELECT" === Cr(t)) throw ii("selmulti", "Binding to the 'multiple' attribute is not supported. Element: {0}", z(t));
					e.push({
						priority: 100,
						compile: function() {
							return {
								pre: function(e, n, a) {
									var s = a.$$observers || (a.$$observers = {});
									if (l.test(i)) throw ii("nodomevents", "Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead.");
									o = r(a[i], !0, B(t, i)), o && (a[i] = o(e), (s[i] || (s[i] = [])).$$inter = !0, (a.$$observers && a.$$observers[i].$$scope || e).$watch(o, function(t, e) {
										"class" === i && t != e ? a.$updateClass(t, e) : a.$set(i, t)
									}))
								}
							}
						}
					})
				}
			}
			function Q(t, n, r) {
				var i, o, a = n[0],
					s = n.length,
					u = a.parentNode;
				if (t) for (i = 0, o = t.length; o > i; i++) if (t[i] == a) {
					t[i++] = r;
					for (var c = i, l = c + s - 1, f = t.length; f > c; c++, l++) f > l ? t[c] = t[l] : delete t[c];
					t.length -= s - 1;
					break
				}
				u && u.replaceChild(r, a);
				var h = e.createDocumentFragment();
				h.appendChild(a), r[br.expando] = a[br.expando];
				for (var p = 1, $ = n.length; $ > p; p++) {
					var d = n[p];
					br(d).remove(), h.appendChild(d), delete n[p]
				}
				n[0] = r, n.length = 1
			}
			function J(t, e) {
				return f(function() {
					return t.apply(null, arguments)
				}, t, e)
			}
			var G = function(t, e) {
				this.$$element = t, this.$attr = e || {}
			};
			G.prototype = {
				$normalize: Fe,
				$addClass: function(t) {
					t && t.length > 0 && C.addClass(this.$$element, t)
				},
				$removeClass: function(t) {
					t && t.length > 0 && C.removeClass(this.$$element, t)
				},
				$updateClass: function(t, e) {
					var n = Le(t, e),
						r = Le(e, t);
					0 === n.length ? C.removeClass(this.$$element, r) : 0 === r.length ? C.addClass(this.$$element, n) : C.setClass(this.$$element, n, r)
				},
				$set: function(t, e, r, i) {
					var a, s = Oe(this.$$element[0], t);
					s && (this.$$element.prop(t, e), i = s), this[t] = e, i ? this.$attr[t] = i : (i = this.$attr[t], i || (this.$attr[t] = i = Z(t, "-"))), a = Cr(this.$$element), ("A" === a && "href" === t || "IMG" === a && "src" === t) && (this[t] = e = k(e, "src" === t)), r !== !1 && (null === e || e === n ? this.$$element.removeAttr(i) : this.$$element.attr(i, e));
					var c = this.$$observers;
					c && o(c[t], function(t) {
						try {
							t(e)
						} catch (n) {
							u(n)
						}
					})
				},
				$observe: function(t, e) {
					var n = this,
						r = n.$$observers || (n.$$observers = {}),
						i = r[t] || (r[t] = []);
					return i.push(e), m.$evalAsync(function() {
						i.$$inter || e(n[t])
					}), e
				}
			};
			var X = r.startSymbol(),
				K = r.endSymbol(),
				Y = "{{" == X || "}}" == K ? d : function(t) {
					return t.replace(/\{\{/g, X).replace(/}}/g, K)
				}, te = /^ngAttr[A-Z]/;
			return E
		}]
	}
	function Fe(t) {
		return ce(t.replace(oi, ""))
	}
	function Le(t, e) {
		var n = "",
			r = t.split(/\s+/),
			i = e.split(/\s+/);
		t: for (var o = 0; o < r.length; o++) {
			for (var a = r[o], s = 0; s < i.length; s++) if (a == i[s]) continue t;
			n += (n.length > 0 ? " " : "") + a
		}
		return n
	}
	function He() {
		var t = {}, e = /^(\S+)(\s+as\s+(\w+))?$/;
		this.register = function(e, n) {
			re(e, "controller"), y(e) ? f(t, e) : t[e] = n
		}, this.$get = ["$injector", "$window", function(n, i) {
			return function(o, a) {
				var s, u, c, l;
				if (w(o) && (u = o.match(e), c = u[1], l = u[3], o = t.hasOwnProperty(c) ? t[c] : ie(a.$scope, c, !0) || ie(i, c, !0), ne(o, c, !0)), s = n.instantiate(o, a), l) {
					if (!a || "object" != typeof a.$scope) throw r("$controller")("noscp", "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.", c || o.name, l);
					a.$scope[l] = s
				}
				return s
			}
		}]
	}
	function Be() {
		this.$get = ["$window", function(t) {
			return br(t.document)
		}]
	}
	function ze() {
		this.$get = ["$log", function(t) {
			return function() {
				t.error.apply(t, arguments)
			}
		}]
	}
	function We(t) {
		var e, n, r, i = {};
		return t ? (o(t.split("\n"), function(t) {
			r = t.indexOf(":"), e = dr(Pr(t.substr(0, r))), n = Pr(t.substr(r + 1)), e && (i[e] = i[e] ? i[e] + ", " + n : n)
		}), i) : i
	}
	function Qe(t) {
		var e = y(t) ? t : n;
		return function(n) {
			return e || (e = We(t)), n ? e[dr(n)] || null : e
		}
	}
	function Je(t, e, n) {
		return S(n) ? n(t, e) : (o(n, function(n) {
			t = n(t, e)
		}), t)
	}
	function Ge(t) {
		return t >= 200 && 300 > t
	}
	function Xe() {
		var t = /^\s*(\[|\{[^\{])/,
			e = /[\}\]]\s*$/,
			r = /^\)\]\}',?\n/,
			i = {
				"Content-Type": "application/json;charset=utf-8"
			}, a = this.defaults = {
				transformResponse: [function(n) {
					return w(n) && (n = n.replace(r, ""), t.test(n) && e.test(n) && (n = H(n))), n
				}],
				transformRequest: [function(t) {
					return !y(t) || A(t) || O(t) ? t : L(t)
				}],
				headers: {
					common: {
						Accept: "application/json, text/plain, */*"
					},
					post: _(i),
					put: _(i),
					patch: _(i)
				},
				xsrfCookieName: "XSRF-TOKEN",
				xsrfHeaderName: "X-XSRF-TOKEN"
			}, u = this.interceptors = [],
			c = this.responseInterceptors = [];
		this.$get = ["$httpBackend", "$browser", "$cacheFactory", "$rootScope", "$q", "$injector", function(t, e, r, i, l, h) {
			function p(t) {
				function e(t) {
					var e = f({}, t, {
						data: Je(t.data, t.headers, i.transformResponse)
					});
					return Ge(t.status) ? e : l.reject(e)
				}
				function r(t) {
					function e(t) {
						var e;
						o(t, function(n, r) {
							S(n) && (e = n(), null != e ? t[r] = e : delete t[r])
						})
					}
					var n, r, i, s = a.headers,
						u = f({}, t.headers);
					s = f({}, s.common, s[dr(t.method)]);
					t: for (n in s) {
						r = dr(n);
						for (i in u) if (dr(i) === r) continue t;
						u[n] = s[n]
					}
					return e(u),
					u
				}
				var i = {
					method: "get",
					transformRequest: a.transformRequest,
					transformResponse: a.transformResponse
				}, s = r(t);
				f(i, t), i.headers = s, i.method = gr(i.method);
				var u = function(t) {
					s = t.headers;
					var n = Je(t.data, Qe(s), t.transformRequest);
					return g(n) && o(s, function(t, e) {
						"content-type" === dr(e) && delete s[e]
					}), g(t.withCredentials) && !g(a.withCredentials) && (t.withCredentials = a.withCredentials), v(t, n, s).then(e, e)
				}, c = [u, n],
					h = l.when(i);
				for (o(k, function(t) {
					(t.request || t.requestError) && c.unshift(t.request, t.requestError), (t.response || t.responseError) && c.push(t.response, t.responseError)
				}); c.length;) {
					var p = c.shift(),
						$ = c.shift();
					h = h.then(p, $)
				}
				return h.success = function(t) {
					return h.then(function(e) {
						t(e.data, e.status, e.headers, i)
					}), h
				}, h.error = function(t) {
					return h.then(null, function(e) {
						t(e.data, e.status, e.headers, i)
					}), h
				}, h
			}
			function $() {
				o(arguments, function(t) {
					p[t] = function(e, n) {
						return p(f(n || {}, {
							method: t,
							url: e
						}))
					}
				})
			}
			function d() {
				o(arguments, function(t) {
					p[t] = function(e, n, r) {
						return p(f(r || {}, {
							method: t,
							url: e,
							data: n
						}))
					}
				})
			}
			function v(r, o, s) {
				function u(t, e, n, r) {
					h && (Ge(t) ? h.put(w, [t, e, We(n), r]) : h.remove(w)), c(e, t, n, r), i.$$phase || i.$apply()
				}
				function c(t, e, n, i) {
					e = Math.max(e, 0), (Ge(e) ? d.resolve : d.reject)({
						data: t,
						status: e,
						headers: Qe(n),
						config: r,
						statusText: i
					})
				}
				function f() {
					var t = j(p.pendingRequests, r); - 1 !== t && p.pendingRequests.splice(t, 1)
				}
				var h, $, d = l.defer(),
					v = d.promise,
					w = b(r.url, r.params);
				if (p.pendingRequests.push(r), v.then(f, f), !r.cache && !a.cache || r.cache === !1 || "GET" !== r.method && "JSONP" !== r.method || (h = y(r.cache) ? r.cache : y(a.cache) ? a.cache : C), h) if ($ = h.get(w), m($)) {
					if (T($)) return $.then(f, f), $;
					Nr($) ? c($[1], $[0], _($[2]), $[3]) : c($, 200, {}, "OK")
				} else h.put(w, v);
				if (g($)) {
					var x = In(r.url) ? e.cookies()[r.xsrfCookieName || a.xsrfCookieName] : n;
					x && (s[r.xsrfHeaderName || a.xsrfHeaderName] = x), t(r.method, w, o, u, s, r.timeout, r.withCredentials, r.responseType)
				}
				return v
			}
			function b(t, e) {
				if (!e) return t;
				var n = [];
				return s(e, function(t, e) {
					null === t || g(t) || (Nr(t) || (t = [t]), o(t, function(t) {
						y(t) && (t = x(t) ? t.toISOString() : L(t)), n.push(X(e) + "=" + X(t))
					}))
				}), n.length > 0 && (t += (-1 == t.indexOf("?") ? "?" : "&") + n.join("&")), t
			}
			var C = r("$http"),
				k = [];
			return o(u, function(t) {
				k.unshift(w(t) ? h.get(t) : h.invoke(t))
			}), o(c, function(t, e) {
				var n = w(t) ? h.get(t) : h.invoke(t);
				k.splice(e, 0, {
					response: function(t) {
						return n(l.when(t))
					},
					responseError: function(t) {
						return n(l.reject(t))
					}
				})
			}), p.pendingRequests = [], $("get", "delete", "head", "jsonp"), d("post", "put", "patch"), p.defaults = a, p
		}]
	}
	function Ke(e) {
		if (8 >= wr && (!e.match(/^(get|post|head|put|delete|options)$/i) || !t.XMLHttpRequest)) return new t.ActiveXObject("Microsoft.XMLHTTP");
		if (t.XMLHttpRequest) return new t.XMLHttpRequest;
		throw r("$httpBackend")("noxhr", "This browser does not support XMLHttpRequest.")
	}
	function Ye() {
		this.$get = ["$browser", "$window", "$document", function(t, e, n) {
			return Ze(t, Ke, t.defer, e.angular.callbacks, n[0])
		}]
	}
	function Ze(t, e, n, r, i) {
		function a(t, e, n) {
			var o = i.createElement("script"),
				a = null;
			return o.type = "text/javascript", o.src = t, o.async = !0, a = function(t) {
				Vr(o, "load", a), Vr(o, "error", a), i.body.removeChild(o), o = null;
				var s = -1,
					u = "unknown";
				t && ("load" !== t.type || r[e].called || (t = {
					type: "error"
				}), u = t.type, s = "error" === t.type ? 404 : 200), n && n(s, u)
			}, Ur(o, "load", a), Ur(o, "error", a), 8 >= wr && (o.onreadystatechange = function() {
				w(o.readyState) && /loaded|complete/.test(o.readyState) && (o.onreadystatechange = null, a({
					type: "load"
				}))
			}), i.body.appendChild(o), a
		}
		var s = -1;
		return function(i, u, c, l, f, h, p, d) {
			function v() {
				y = s, b && b(), x && x.abort()
			}
			function g(e, r, i, o, a) {
				C && n.cancel(C), b = x = null, 0 === r && (r = i ? 200 : "file" == Vn(u).protocol ? 404 : 0), r = 1223 === r ? 204 : r, a = a || "", e(r, i, o, a), t.$$completeOutstandingRequest($)
			}
			var y;
			if (t.$$incOutstandingRequestCount(), u = u || t.url(), "jsonp" == dr(i)) {
				var w = "_" + (r.counter++).toString(36);
				r[w] = function(t) {
					r[w].data = t, r[w].called = !0
				};
				var b = a(u.replace("JSON_CALLBACK", "angular.callbacks." + w), w, function(t, e) {
					g(l, t, r[w].data, "", e), r[w] = $
				})
			} else {
				var x = e(i);
				if (x.open(i, u, !0), o(f, function(t, e) {
					m(t) && x.setRequestHeader(e, t)
				}), x.onreadystatechange = function() {
					if (x && 4 == x.readyState) {
						var t = null,
							e = null,
							n = "";
						y !== s && (t = x.getAllResponseHeaders(), e = "response" in x ? x.response : x.responseText), y === s && 10 > wr || (n = x.statusText), g(l, y || x.status, e, t, n)
					}
				}, p && (x.withCredentials = !0), d) try {
					x.responseType = d
				} catch (S) {
					if ("json" !== d) throw S
				}
				x.send(c || null)
			}
			if (h > 0) var C = n(v, h);
			else T(h) && h.then(v)
		}
	}
	function tn() {
		var t = "{{",
			e = "}}";
		this.startSymbol = function(e) {
			return e ? (t = e, this) : t
		}, this.endSymbol = function(t) {
			return t ? (e = t, this) : e
		}, this.$get = ["$parse", "$exceptionHandler", "$sce", function(n, r, i) {
			function o(o, u, c) {
				for (var l, f, h, p, $ = 0, d = [], v = o.length, g = !1, m = []; v > $;) - 1 != (l = o.indexOf(t, $)) && -1 != (f = o.indexOf(e, l + a)) ? ($ != l && d.push(o.substring($, l)), d.push(h = n(p = o.substring(l + a, f))), h.exp = p, $ = f + s, g = !0) : ($ != v && d.push(o.substring($)), $ = v);
				if ((v = d.length) || (d.push(""), v = 1), c && d.length > 1) throw ai("noconcat", "Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.  See http://docs.angularjs.org/api/ng.$sce", o);
				return !u || g ? (m.length = v, h = function(t) {
					try {
						for (var e, n = 0, a = v; a > n; n++) {
							if ("function" == typeof(e = d[n])) if (e = e(t), e = c ? i.getTrusted(c, e) : i.valueOf(e), null == e) e = "";
							else switch (typeof e) {
								case "string":
									break;
								case "number":
									e = "" + e;
									break;
								default:
									e = L(e)
							}
							m[n] = e
						}
						return m.join("")
					} catch (s) {
						var u = ai("interr", "Can't interpolate: {0}\n{1}", o, s.toString());
						r(u)
					}
				}, h.exp = o, h.parts = d, h) : void 0
			}
			var a = t.length,
				s = e.length;
			return o.startSymbol = function() {
				return t
			}, o.endSymbol = function() {
				return e
			}, o
		}]
	}
	function en() {
		this.$get = ["$rootScope", "$window", "$q", function(t, e, n) {
			function r(r, o, a, s) {
				var u = e.setInterval,
					c = e.clearInterval,
					l = n.defer(),
					f = l.promise,
					h = 0,
					p = m(s) && !s;
				return a = m(a) ? a : 0, f.then(null, null, r), f.$$intervalId = u(function() {
					l.notify(h++), a > 0 && h >= a && (l.resolve(h), c(f.$$intervalId), delete i[f.$$intervalId]), p || t.$apply()
				}, o), i[f.$$intervalId] = l, f
			}
			var i = {};
			return r.cancel = function(t) {
				return t && t.$$intervalId in i ? (i[t.$$intervalId].reject("canceled"), e.clearInterval(t.$$intervalId), delete i[t.$$intervalId], !0) : !1
			}, r
		}]
	}
	function nn() {
		this.$get = function() {
			return {
				id: "en-us",
				NUMBER_FORMATS: {
					DECIMAL_SEP: ".",
					GROUP_SEP: ",",
					PATTERNS: [{
						minInt: 1,
						minFrac: 0,
						maxFrac: 3,
						posPre: "",
						posSuf: "",
						negPre: "-",
						negSuf: "",
						gSize: 3,
						lgSize: 3
					}, {
						minInt: 1,
						minFrac: 2,
						maxFrac: 2,
						posPre: "¤",
						posSuf: "",
						negPre: "(¤",
						negSuf: ")",
						gSize: 3,
						lgSize: 3
					}],
					CURRENCY_SYM: "$"
				},
				DATETIME_FORMATS: {
					MONTH: "January,February,March,April,May,June,July,August,September,October,November,December".split(","),
					SHORTMONTH: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),
					DAY: "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),
					SHORTDAY: "Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),
					AMPMS: ["AM", "PM"],
					medium: "MMM d, y h:mm:ss a",
					"short": "M/d/yy h:mm a",
					fullDate: "EEEE, MMMM d, y",
					longDate: "MMMM d, y",
					mediumDate: "MMM d, y",
					shortDate: "M/d/yy",
					mediumTime: "h:mm:ss a",
					shortTime: "h:mm a"
				},
				pluralCat: function(t) {
					return 1 === t ? "one" : "other"
				}
			}
		}
	}
	function rn(t) {
		for (var e = t.split("/"), n = e.length; n--;) e[n] = G(e[n]);
		return e.join("/")
	}
	function on(t, e, n) {
		var r = Vn(t, n);
		e.$$protocol = r.protocol, e.$$host = r.hostname, e.$$port = h(r.port) || ui[r.protocol] || null
	}
	function an(t, e, n) {
		var r = "/" !== t.charAt(0);
		r && (t = "/" + t);
		var i = Vn(t, n);
		e.$$path = decodeURIComponent(r && "/" === i.pathname.charAt(0) ? i.pathname.substring(1) : i.pathname), e.$$search = Q(i.search), e.$$hash = decodeURIComponent(i.hash), e.$$path && "/" != e.$$path.charAt(0) && (e.$$path = "/" + e.$$path)
	}
	function sn(t, e) {
		return 0 === e.indexOf(t) ? e.substr(t.length) : void 0
	}
	function un(t) {
		var e = t.indexOf("#");
		return -1 == e ? t : t.substr(0, e)
	}
	function cn(t) {
		return t.substr(0, un(t).lastIndexOf("/") + 1)
	}
	function ln(t) {
		return t.substring(0, t.indexOf("/", t.indexOf("//") + 2))
	}
	function fn(t, e) {
		this.$$html5 = !0, e = e || "";
		var r = cn(t);
		on(t, this, t), this.$$parse = function(e) {
			var n = sn(r, e);
			if (!w(n)) throw ci("ipthprfx", 'Invalid url "{0}", missing path prefix "{1}".', e, r);
			an(n, this, t), this.$$path || (this.$$path = "/"), this.$$compose()
		}, this.$$compose = function() {
			var t = J(this.$$search),
				e = this.$$hash ? "#" + G(this.$$hash) : "";
			this.$$url = rn(this.$$path) + (t ? "?" + t : "") + e, this.$$absUrl = r + this.$$url.substr(1)
		}, this.$$parseLinkUrl = function(i) {
			var o, a, s;
			return (o = sn(t, i)) !== n ? (a = o, s = (o = sn(e, o)) !== n ? r + (sn("/", o) || o) : t + a) : (o = sn(r, i)) !== n ? s = r + o : r == i + "/" && (s = r), s && this.$$parse(s), !! s
		}
	}
	function hn(t, e) {
		var n = cn(t);
		on(t, this, t), this.$$parse = function(r) {
			function i(t, e, n) {
				var r, i = /^\/[A-Z]:(\/.*)/;
				return 0 === e.indexOf(n) && (e = e.replace(n, "")), i.exec(e) ? t : (r = i.exec(t), r ? r[1] : t)
			}
			var o = sn(t, r) || sn(n, r),
				a = "#" == o.charAt(0) ? sn(e, o) : this.$$html5 ? o : "";
			if (!w(a)) throw ci("ihshprfx", 'Invalid url "{0}", missing hash prefix "{1}".', r, e);
			an(a, this, t), this.$$path = i(this.$$path, a, t), this.$$compose()
		}, this.$$compose = function() {
			var n = J(this.$$search),
				r = this.$$hash ? "#" + G(this.$$hash) : "";
			this.$$url = rn(this.$$path) + (n ? "?" + n : "") + r, this.$$absUrl = t + (this.$$url ? e + this.$$url : "")
		}, this.$$parseLinkUrl = function(e) {
			return un(t) == un(e) ? (this.$$parse(e), !0) : !1
		}
	}
	function pn(t, e) {
		this.$$html5 = !0, hn.apply(this, arguments);
		var n = cn(t);
		this.$$parseLinkUrl = function(r) {
			var i, o;
			return t == un(r) ? i = r : (o = sn(n, r)) ? i = t + e + o : n === r + "/" && (i = n), i && this.$$parse(i), !! i
		}, this.$$compose = function() {
			var n = J(this.$$search),
				r = this.$$hash ? "#" + G(this.$$hash) : "";
			this.$$url = rn(this.$$path) + (n ? "?" + n : "") + r, this.$$absUrl = t + e + this.$$url
		}
	}
	function $n(t) {
		return function() {
			return this[t]
		}
	}
	function dn(t, e) {
		return function(n) {
			return g(n) ? this[t] : (this[t] = e(n), this.$$compose(), this)
		}
	}
	function vn() {
		var e = "",
			n = !1;
		this.hashPrefix = function(t) {
			return m(t) ? (e = t, this) : e
		}, this.html5Mode = function(t) {
			return m(t) ? (n = t, this) : n
		}, this.$get = ["$rootScope", "$browser", "$sniffer", "$rootElement", function(r, i, o, a) {
			function s(t) {
				r.$broadcast("$locationChangeSuccess", u.absUrl(), t)
			}
			var u, c, l, f = i.baseHref(),
				h = i.url();
			n ? (l = ln(h) + (f || "/"), c = o.history ? fn : pn) : (l = un(h), c = hn), u = new c(l, "#" + e), u.$$parseLinkUrl(h, h);
			var p = /^\s*(javascript|mailto):/i;
			a.on("click", function(e) {
				if (!e.ctrlKey && !e.metaKey && 2 != e.which) {
					for (var n = br(e.target);
					"a" !== dr(n[0].nodeName);) if (n[0] === a[0] || !(n = n.parent())[0]) return;
					var o = n.prop("href"),
						s = n.attr("href") || n.attr("xlink:href");
					y(o) && "[object SVGAnimatedString]" === o.toString() && (o = Vn(o.animVal).href), p.test(o) || !o || n.attr("target") || e.isDefaultPrevented() || u.$$parseLinkUrl(o, s) && (e.preventDefault(), u.absUrl() != i.url() && (r.$apply(), t.angular["ff-684208-preventDefault"] = !0))
				}
			}), u.absUrl() != h && i.url(u.absUrl(), !0), i.onUrlChange(function(t) {
				u.absUrl() != t && (r.$evalAsync(function() {
					var e = u.absUrl();
					u.$$parse(t), r.$broadcast("$locationChangeStart", t, e).defaultPrevented ? (u.$$parse(e), i.url(e)) : s(e)
				}), r.$$phase || r.$digest())
			});
			var $ = 0;
			return r.$watch(function() {
				var t = i.url(),
					e = u.$$replace;
				return $ && t == u.absUrl() || ($++, r.$evalAsync(function() {
					r.$broadcast("$locationChangeStart", u.absUrl(), t).defaultPrevented ? u.$$parse(t) : (i.url(u.absUrl(), e), s(t))
				})), u.$$replace = !1, $
			}), u
		}]
	}
	function gn() {
		var t = !0,
			e = this;
		this.debugEnabled = function(e) {
			return m(e) ? (t = e, this) : t
		}, this.$get = ["$window", function(n) {
			function r(t) {
				return t instanceof Error && (t.stack ? t = t.message && -1 === t.stack.indexOf(t.message) ? "Error: " + t.message + "\n" + t.stack : t.stack : t.sourceURL && (t = t.message + "\n" + t.sourceURL + ":" + t.line)), t
			}
			function i(t) {
				var e = n.console || {}, i = e[t] || e.log || $,
					a = !1;
				try {
					a = !! i.apply
				} catch (s) {}
				return a ? function() {
					var t = [];
					return o(arguments, function(e) {
						t.push(r(e))
					}), i.apply(e, t)
				} : function(t, e) {
					i(t, null == e ? "" : e)
				}
			}
			return {
				log: i("log"),
				info: i("info"),
				warn: i("warn"),
				error: i("error"),
				debug: function() {
					var n = i("debug");
					return function() {
						t && n.apply(e, arguments)
					}
				}()
			}
		}]
	}
	function mn(t, e) {
		if ("__defineGetter__" === t || "__defineSetter__" === t || "__lookupGetter__" === t || "__lookupSetter__" === t || "__proto__" === t) throw fi("isecfld", "Attempting to access a disallowed field in Angular expressions! Expression: {0}", e);
		return t
	}
	function yn(t, e) {
		if (t) {
			if (t.constructor === t) throw fi("isecfn", "Referencing Function in Angular expressions is disallowed! Expression: {0}", e);
			if (t.document && t.location && t.alert && t.setInterval) throw fi("isecwindow", "Referencing the Window in Angular expressions is disallowed! Expression: {0}", e);
			if (t.children && (t.nodeName || t.prop && t.attr && t.find)) throw fi("isecdom", "Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}", e);
			if (t === Object) throw fi("isecobj", "Referencing Object in Angular expressions is disallowed! Expression: {0}", e)
		}
		return t
	}
	function wn(t, e) {
		if (t) {
			if (t.constructor === t) throw fi("isecfn", "Referencing Function in Angular expressions is disallowed! Expression: {0}", e);
			if (t === pi || t === $i || di && t === di) throw fi("isecff", "Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}", e)
		}
	}
	function bn(t, e, r, i, o) {
		yn(t, i), o = o || {};
		for (var a, s = e.split("."), u = 0; s.length > 1; u++) {
			a = mn(s.shift(), i);
			var c = yn(t[a], i);
			c || (c = {}, t[a] = c), t = c, t.then && o.unwrapPromises && (li(i), "$$v" in t || ! function(t) {
				t.then(function(e) {
					t.$$v = e
				})
			}(t), t.$$v === n && (t.$$v = {}), t = t.$$v)
		}
		return a = mn(s.shift(), i), yn(t[a], i), t[a] = r, r
	}
	function xn(t) {
		return "constructor" == t
	}
	function Sn(t, e, r, i, o, a, s) {
		mn(t, a), mn(e, a), mn(r, a), mn(i, a), mn(o, a);
		var u = function(t) {
			return yn(t, a)
		}, c = s.expensiveChecks,
			l = c || xn(t) ? u : d,
			f = c || xn(e) ? u : d,
			h = c || xn(r) ? u : d,
			p = c || xn(i) ? u : d,
			$ = c || xn(o) ? u : d;
		return s.unwrapPromises ? function(s, u) {
			var c, d = u && u.hasOwnProperty(t) ? u : s;
			return null == d ? d : (d = l(d[t]), d && d.then && (li(a), "$$v" in d || (c = d, c.$$v = n, c.then(function(t) {
				c.$$v = l(t)
			})), d = l(d.$$v)), e ? null == d ? n : (d = f(d[e]), d && d.then && (li(a), "$$v" in d || (c = d, c.$$v = n, c.then(function(t) {
				c.$$v = f(t)
			})), d = f(d.$$v)), r ? null == d ? n : (d = h(d[r]), d && d.then && (li(a), "$$v" in d || (c = d, c.$$v = n, c.then(function(t) {
				c.$$v = h(t)
			})), d = h(d.$$v)), i ? null == d ? n : (d = p(d[i]), d && d.then && (li(a), "$$v" in d || (c = d, c.$$v = n, c.then(function(t) {
				c.$$v = p(t)
			})), d = p(d.$$v)), o ? null == d ? n : (d = $(d[o]), d && d.then && (li(a), "$$v" in d || (c = d, c.$$v = n, c.then(function(t) {
				c.$$v = $(t)
			})), d = $(d.$$v)), d) : d) : d) : d) : d)
		} : function(a, s) {
			var u = s && s.hasOwnProperty(t) ? s : a;
			return null == u ? u : (u = l(u[t]), e ? null == u ? n : (u = f(u[e]), r ? null == u ? n : (u = h(u[r]), i ? null == u ? n : (u = p(u[i]), o ? null == u ? n : u = $(u[o]) : u) : u) : u) : u)
		}
	}
	function Cn(t, e) {
		return function(n, r) {
			return t(n, r, li, yn, e)
		}
	}
	function kn(t, e, r) {
		var i = e.expensiveChecks,
			a = i ? bi : wi;
		if (a.hasOwnProperty(t)) return a[t];
		var s, u = t.split("."),
			c = u.length;
		if (e.csp) s = 6 > c ? Sn(u[0], u[1], u[2], u[3], u[4], r, e) : function(t, i) {
			var o, a = 0;
			do o = Sn(u[a++], u[a++], u[a++], u[a++], u[a++], r, e)(t, i), i = n, t = o;
			while (c > a);
			return o
		};
		else {
			var l = "var p;\n";
			i && (l += "s = eso(s, fe);\nl = eso(l, fe);\n");
			var f = i;
			o(u, function(t, n) {
				mn(t, r);
				var o = (n ? "s" : '((l&&l.hasOwnProperty("' + t + '"))?l:s)') + '["' + t + '"]',
					a = i || xn(t);
				a && (o = "eso(" + o + ", fe)", f = !0), l += "if(s == null) return undefined;\ns=" + o + ";\n", e.unwrapPromises && (l += 'if (s && s.then) {\n pw("' + r.replace(/(["\r\n])/g, "\\$1") + '");\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v=' + (a ? "eso(v)" : "v") + ";});\n}\n s=" + (a ? "eso(s.$$v)" : "s.$$v") + "\n}\n")
			}), l += "return s;";
			var h = new Function("s", "l", "pw", "eso", "fe", l);
			h.toString = v(l), (f || e.unwrapPromises) && (h = Cn(h, r)), s = h
		}
		return "hasOwnProperty" !== t && (a[t] = s), s
	}
	function En() {
		var t = {}, e = {}, n = {
			csp: !1,
			unwrapPromises: !1,
			logPromiseWarnings: !0,
			expensiveChecks: !1
		};
		this.unwrapPromises = function(t) {
			return m(t) ? (n.unwrapPromises = !! t, this) : n.unwrapPromises
		}, this.logPromiseWarnings = function(t) {
			return m(t) ? (n.logPromiseWarnings = t, this) : n.logPromiseWarnings
		}, this.$get = ["$filter", "$sniffer", "$log", function(r, i, o) {
			n.csp = i.csp;
			var a = {
				csp: n.csp,
				unwrapPromises: n.unwrapPromises,
				logPromiseWarnings: n.logPromiseWarnings,
				expensiveChecks: !0
			};
			return li = function(t) {
				n.logPromiseWarnings && !hi.hasOwnProperty(t) && (hi[t] = !0, o.warn("[$parse] Promise found in the expression `" + t + "`. Automatic unwrapping of promises in Angular expressions is deprecated."))
			},
			function(i, o) {
				var s;
				switch (typeof i) {
					case "string":
						var u = o ? e : t;
						if (u.hasOwnProperty(i)) return u[i];
						var c = o ? a : n,
							l = new mi(c),
							f = new yi(l, r, c);
						return s = f.parse(i), "hasOwnProperty" !== i && (u[i] = s), s;
					case "function":
						return i;
					default:
						return $
				}
			}
		}]
	}
	function An() {
		this.$get = ["$rootScope", "$exceptionHandler", function(t, e) {
			return On(function(e) {
				t.$evalAsync(e)
			}, e)
		}]
	}
	function On(t, e) {
		function r(t) {
			return t
		}
		function i(t) {
			return c(t)
		}
		function a(t) {
			var e = s(),
				n = 0,
				r = Nr(t) ? [] : {};
			return o(t, function(t, i) {
				n++, u(t).then(function(t) {
					r.hasOwnProperty(i) || (r[i] = t, --n || e.resolve(r))
				}, function(t) {
					r.hasOwnProperty(i) || e.reject(t)
				})
			}), 0 === n && e.resolve(r), e.promise
		}
		var s = function() {
			var o, a, c = [];
			return a = {
				resolve: function(e) {
					if (c) {
						var r = c;
						c = n, o = u(e), r.length && t(function() {
							for (var t, e = 0, n = r.length; n > e; e++) t = r[e], o.then(t[0], t[1], t[2])
						})
					}
				},
				reject: function(t) {
					a.resolve(l(t))
				},
				notify: function(e) {
					if (c) {
						var n = c;
						c.length && t(function() {
							for (var t, r = 0, i = n.length; i > r; r++) t = n[r], t[2](e)
						})
					}
				},
				promise: {
					then: function(t, n, a) {
						var u = s(),
							l = function(n) {
								try {
									u.resolve((S(t) ? t : r)(n))
								} catch (i) {
									u.reject(i), e(i)
								}
							}, f = function(t) {
								try {
									u.resolve((S(n) ? n : i)(t))
								} catch (r) {
									u.reject(r), e(r)
								}
							}, h = function(t) {
								try {
									u.notify((S(a) ? a : r)(t))
								} catch (n) {
									e(n)
								}
							};
						return c ? c.push([l, f, h]) : o.then(l, f, h), u.promise
					},
					"catch": function(t) {
						return this.then(null, t)
					},
					"finally": function(t) {
						function e(t, e) {
							var n = s();
							return e ? n.resolve(t) : n.reject(t), n.promise
						}
						function n(n, i) {
							var o = null;
							try {
								o = (t || r)()
							} catch (a) {
								return e(a, !1)
							}
							return T(o) ? o.then(function() {
								return e(n, i)
							}, function(t) {
								return e(t, !1)
							}) : e(n, i)
						}
						return this.then(function(t) {
							return n(t, !0)
						}, function(t) {
							return n(t, !1)
						})
					}
				}
			}
		}, u = function(e) {
			return T(e) ? e : {
				then: function(n) {
					var r = s();
					return t(function() {
						r.resolve(n(e))
					}), r.promise
				}
			}
		}, c = function(t) {
			var e = s();
			return e.reject(t), e.promise
		}, l = function(n) {
			return {
				then: function(r, o) {
					var a = s();
					return t(function() {
						try {
							a.resolve((S(o) ? o : i)(n))
						} catch (t) {
							a.reject(t), e(t)
						}
					}), a.promise
				}
			}
		}, f = function(n, o, a, l) {
			var f, h = s(),
				p = function(t) {
					try {
						return (S(o) ? o : r)(t)
					} catch (n) {
						return e(n), c(n)
					}
				}, $ = function(t) {
					try {
						return (S(a) ? a : i)(t)
					} catch (n) {
						return e(n), c(n)
					}
				}, d = function(t) {
					try {
						return (S(l) ? l : r)(t)
					} catch (n) {
						e(n)
					}
				};
			return t(function() {
				u(n).then(function(t) {
					f || (f = !0, h.resolve(u(t).then(p, $, d)))
				}, function(t) {
					f || (f = !0, h.resolve($(t)))
				}, function(t) {
					f || h.notify(d(t))
				})
			}), h.promise
		};
		return {
			defer: s,
			reject: c,
			when: f,
			all: a
		}
	}
	function Tn() {
		this.$get = ["$window", "$timeout", function(t, e) {
			var n = t.requestAnimationFrame || t.webkitRequestAnimationFrame || t.mozRequestAnimationFrame,
				r = t.cancelAnimationFrame || t.webkitCancelAnimationFrame || t.mozCancelAnimationFrame || t.webkitCancelRequestAnimationFrame,
				i = !! n,
				o = i ? function(t) {
					var e = n(t);
					return function() {
						r(e)
					}
				} : function(t) {
					var n = e(t, 16.66, !1);
					return function() {
						e.cancel(n)
					}
				};
			return o.supported = i, o
		}]
	}
	function Mn() {
		var t = 10,
			e = r("$rootScope"),
			n = null;
		this.digestTtl = function(e) {
			return arguments.length && (t = e), t
		}, this.$get = ["$injector", "$exceptionHandler", "$parse", "$browser", function(r, a, s, u) {
			function l() {
				this.$id = c(), this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null, this["this"] = this.$root = this, this.$$destroyed = !1, this.$$asyncQueue = [], this.$$postDigestQueue = [], this.$$listeners = {}, this.$$listenerCount = {}, this.$$isolateBindings = {}
			}
			function f(t) {
				if (g.$$phase) throw e("inprog", "{0} already in progress", g.$$phase);
				g.$$phase = t
			}
			function h() {
				g.$$phase = null
			}
			function p(t, e) {
				var n = s(t);
				return ne(n, e), n
			}
			function d(t, e, n) {
				do t.$$listenerCount[n] -= e, 0 === t.$$listenerCount[n] && delete t.$$listenerCount[n];
				while (t = t.$parent)
			}
			function v() {}
			l.prototype = {
				constructor: l,
				$new: function(t) {
					var e;
					return t ? (e = new l, e.$root = this.$root, e.$$asyncQueue = this.$$asyncQueue, e.$$postDigestQueue = this.$$postDigestQueue) : (this.$$childScopeClass || (this.$$childScopeClass = function() {
						this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null, this.$$listeners = {}, this.$$listenerCount = {}, this.$id = c(), this.$$childScopeClass = null
					}, this.$$childScopeClass.prototype = this), e = new this.$$childScopeClass), e["this"] = e, e.$parent = this, e.$$prevSibling = this.$$childTail, this.$$childHead ? (this.$$childTail.$$nextSibling = e, this.$$childTail = e) : this.$$childHead = this.$$childTail = e, e
				},
				$watch: function(t, e, r) {
					var i = this,
						o = p(t, "watch"),
						a = i.$$watchers,
						s = {
							fn: e,
							last: v,
							get: o,
							exp: t,
							eq: !! r
						};
					if (n = null, !S(e)) {
						var u = p(e || $, "listener");
						s.fn = function(t, e, n) {
							u(n)
						}
					}
					if ("string" == typeof t && o.constant) {
						var c = s.fn;
						s.fn = function(t, e, n) {
							c.call(this, t, e, n), D(a, s)
						}
					}
					return a || (a = i.$$watchers = []), a.unshift(s),
					function() {
						D(a, s), n = null
					}
				},
				$watchCollection: function(t, e) {
					function n() {
						o = h(c);
						var t, e, n;
						if (y(o)) if (i(o)) {
							a !== p && (a = p, v = a.length = 0, f++), t = o.length, v !== t && (f++, a.length = v = t);
							for (var r = 0; t > r; r++) n = a[r] !== a[r] && o[r] !== o[r], n || a[r] === o[r] || (f++, a[r] = o[r])
						} else {
							a !== $ && (a = $ = {}, v = 0, f++), t = 0;
							for (e in o) o.hasOwnProperty(e) && (t++, a.hasOwnProperty(e) ? (n = a[e] !== a[e] && o[e] !== o[e], n || a[e] === o[e] || (f++, a[e] = o[e])) : (v++, a[e] = o[e], f++));
							if (v > t) {
								f++;
								for (e in a) a.hasOwnProperty(e) && !o.hasOwnProperty(e) && (v--, delete a[e])
							}
						} else a !== o && (a = o, f++);
						return f
					}
					function r() {
						if (d ? (d = !1, e(o, o, c)) : e(o, u, c), l) if (y(o)) if (i(o)) {
							u = new Array(o.length);
							for (var t = 0; t < o.length; t++) u[t] = o[t]
						} else {
							u = {};
							for (var n in o) vr.call(o, n) && (u[n] = o[n])
						} else u = o
					}
					var o, a, u, c = this,
						l = e.length > 1,
						f = 0,
						h = s(t),
						p = [],
						$ = {}, d = !0,
						v = 0;
					return this.$watch(n, r)
				},
				$digest: function() {
					var r, i, o, s, c, l, p, $, d, g, m, y = this.$$asyncQueue,
						w = this.$$postDigestQueue,
						b = t,
						x = this,
						C = [];
					f("$digest"), u.$$checkUrlChange(), n = null;
					do {
						for (l = !1, $ = x; y.length;) {
							try {
								m = y.shift(), m.scope.$eval(m.expression)
							} catch (k) {
								h(), a(k)
							}
							n = null
						}
						t: do {
							if (s = $.$$watchers) for (c = s.length; c--;) try {
								if (r = s[c]) if ((i = r.get($)) === (o = r.last) || (r.eq ? q(i, o) : "number" == typeof i && "number" == typeof o && isNaN(i) && isNaN(o))) {
									if (r === n) {
										l = !1;
										break t
									}
								} else l = !0, n = r, r.last = r.eq ? R(i, null) : i, r.fn(i, o === v ? i : o, $), 5 > b && (d = 4 - b, C[d] || (C[d] = []), g = S(r.exp) ? "fn: " + (r.exp.name || r.exp.toString()) : r.exp, g += "; newVal: " + L(i) + "; oldVal: " + L(o), C[d].push(g))
							} catch (k) {
								h(), a(k)
							}
							if (!(p = $.$$childHead || $ !== x && $.$$nextSibling)) for (; $ !== x && !(p = $.$$nextSibling);) $ = $.$parent
						} while ($ = p);
						if ((l || y.length) && !b--) throw h(), e("infdig", "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}", t, L(C))
					} while (l || y.length);
					for (h(); w.length;) try {
						w.shift()()
					} catch (k) {
						a(k)
					}
				},
				$destroy: function() {
					if (!this.$$destroyed) {
						var t = this.$parent;
						this.$broadcast("$destroy"), this.$$destroyed = !0, this !== g && (o(this.$$listenerCount, I(null, d, this)), t.$$childHead == this && (t.$$childHead = this.$$nextSibling), t.$$childTail == this && (t.$$childTail = this.$$prevSibling), this.$$prevSibling && (this.$$prevSibling.$$nextSibling = this.$$nextSibling), this.$$nextSibling && (this.$$nextSibling.$$prevSibling = this.$$prevSibling), this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = this.$root = null, this.$$listeners = {}, this.$$watchers = this.$$asyncQueue = this.$$postDigestQueue = [], this.$destroy = this.$digest = this.$apply = $, this.$on = this.$watch = function() {
							return $
						})
					}
				},
				$eval: function(t, e) {
					return s(t)(this, e)
				},
				$evalAsync: function(t) {
					g.$$phase || g.$$asyncQueue.length || u.defer(function() {
						g.$$asyncQueue.length && g.$digest()
					}), this.$$asyncQueue.push({
						scope: this,
						expression: t
					})
				},
				$$postDigest: function(t) {
					this.$$postDigestQueue.push(t)
				},
				$apply: function(t) {
					try {
						return f("$apply"), this.$eval(t)
					} catch (e) {
						a(e)
					} finally {
						h();
						try {
							g.$digest()
						} catch (e) {
							throw a(e), e
						}
					}
				},
				$on: function(t, e) {
					var n = this.$$listeners[t];
					n || (this.$$listeners[t] = n = []), n.push(e);
					var r = this;
					do r.$$listenerCount[t] || (r.$$listenerCount[t] = 0), r.$$listenerCount[t]++;
					while (r = r.$parent);
					var i = this;
					return function() {
						var r = j(n, e); - 1 !== r && (n[r] = null, d(i, 1, t))
					}
				},
				$emit: function(t) {
					var e, n, r, i = [],
						o = this,
						s = !1,
						u = {
							name: t,
							targetScope: o,
							stopPropagation: function() {
								s = !0
							},
							preventDefault: function() {
								u.defaultPrevented = !0
							},
							defaultPrevented: !1
						}, c = U([u], arguments, 1);
					do {
						for (e = o.$$listeners[t] || i, u.currentScope = o, n = 0, r = e.length; r > n; n++) if (e[n]) try {
							e[n].apply(null, c)
						} catch (l) {
							a(l)
						} else e.splice(n, 1), n--, r--;
						if (s) return u;
						o = o.$parent
					} while (o);
					return u
				},
				$broadcast: function(t) {
					for (var e, n, r, i = this, o = i, s = i, u = {
						name: t,
						targetScope: i,
						preventDefault: function() {
							u.defaultPrevented = !0
						},
						defaultPrevented: !1
					}, c = U([u], arguments, 1); o = s;) {
						for (u.currentScope = o, e = o.$$listeners[t] || [], n = 0, r = e.length; r > n; n++) if (e[n]) try {
							e[n].apply(null, c)
						} catch (l) {
							a(l)
						} else e.splice(n, 1), n--, r--;
						if (!(s = o.$$listenerCount[t] && o.$$childHead || o !== i && o.$$nextSibling)) for (; o !== i && !(s = o.$$nextSibling);) o = o.$parent
					}
					return u
				}
			};
			var g = new l;
			return g
		}]
	}
	function Nn() {
		var t = /^\s*(https?|ftp|mailto|tel|file):/,
			e = /^\s*((https?|ftp|file):|data:image\/)/;
		this.aHrefSanitizationWhitelist = function(e) {
			return m(e) ? (t = e, this) : t
		}, this.imgSrcSanitizationWhitelist = function(t) {
			return m(t) ? (e = t, this) : e
		}, this.$get = function() {
			return function(n, r) {
				var i, o = r ? e : t;
				return wr && !(wr >= 8) || (i = Vn(n).href, "" === i || i.match(o)) ? n : "unsafe:" + i
			}
		}
	}
	function Pn(t) {
		return t.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
	}
	function jn(t) {
		if ("self" === t) return t;
		if (w(t)) {
			if (t.indexOf("***") > -1) throw xi("iwcard", "Illegal sequence *** in string matcher.  String: {0}", t);
			return t = Pn(t).replace("\\*\\*", ".*").replace("\\*", "[^:/.?&;]*"), new RegExp("^" + t + "$")
		}
		if (C(t)) return new RegExp("^" + t.source + "$");
		throw xi("imatcher", 'Matchers may only be "self", string patterns or RegExp objects')
	}
	function Dn(t) {
		var e = [];
		return m(t) && o(t, function(t) {
			e.push(jn(t))
		}), e
	}
	function Rn() {
		this.SCE_CONTEXTS = Si;
		var t = ["self"],
			e = [];
		this.resourceUrlWhitelist = function(e) {
			return arguments.length && (t = Dn(e)), t
		}, this.resourceUrlBlacklist = function(t) {
			return arguments.length && (e = Dn(t)), e
		}, this.$get = ["$injector", function(r) {
			function i(t, e) {
				return "self" === t ? In(e) : !! t.exec(e.href)
			}
			function o(n) {
				var r, o, a = Vn(n.toString()),
					s = !1;
				for (r = 0, o = t.length; o > r; r++) if (i(t[r], a)) {
					s = !0;
					break
				}
				if (s) for (r = 0, o = e.length; o > r; r++) if (i(e[r], a)) {
					s = !1;
					break
				}
				return s
			}
			function a(t) {
				var e = function(t) {
					this.$$unwrapTrustedValue = function() {
						return t
					}
				};
				return t && (e.prototype = new t), e.prototype.valueOf = function() {
					return this.$$unwrapTrustedValue()
				}, e.prototype.toString = function() {
					return this.$$unwrapTrustedValue().toString()
				}, e
			}
			function s(t, e) {
				var r = h.hasOwnProperty(t) ? h[t] : null;
				if (!r) throw xi("icontext", "Attempted to trust a value in invalid context. Context: {0}; Value: {1}", t, e);
				if (null === e || e === n || "" === e) return e;
				if ("string" != typeof e) throw xi("itype", "Attempted to trust a non-string value in a content requiring a string: Context: {0}", t);
				return new r(e)
			}
			function u(t) {
				return t instanceof f ? t.$$unwrapTrustedValue() : t
			}
			function c(t, e) {
				if (null === e || e === n || "" === e) return e;
				var r = h.hasOwnProperty(t) ? h[t] : null;
				if (r && e instanceof r) return e.$$unwrapTrustedValue();
				if (t === Si.RESOURCE_URL) {
					if (o(e)) return e;
					throw xi("insecurl", "Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}", e.toString())
				}
				if (t === Si.HTML) return l(e);
				throw xi("unsafe", "Attempting to use an unsafe value in a safe context.")
			}
			var l = function() {
				throw xi("unsafe", "Attempting to use an unsafe value in a safe context.")
			};
			r.has("$sanitize") && (l = r.get("$sanitize"));
			var f = a(),
				h = {};
			return h[Si.HTML] = a(f), h[Si.CSS] = a(f), h[Si.URL] = a(f), h[Si.JS] = a(f), h[Si.RESOURCE_URL] = a(h[Si.URL]), {
				trustAs: s,
				getTrusted: c,
				valueOf: u
			}
		}]
	}
	function _n() {
		var t = !0;
		this.enabled = function(e) {
			return arguments.length && (t = !! e), t
		}, this.$get = ["$parse", "$sniffer", "$sceDelegate", function(e, n, r) {
			if (t && n.msie && n.msieDocumentMode < 8) throw xi("iequirks", "Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks mode.  You can fix this by adding the text <!doctype html> to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information.");
			var i = _(Si);
			i.isEnabled = function() {
				return t
			}, i.trustAs = r.trustAs, i.getTrusted = r.getTrusted, i.valueOf = r.valueOf, t || (i.trustAs = i.getTrusted = function(t, e) {
				return e
			}, i.valueOf = d), i.parseAs = function(t, n) {
				var r = e(n);
				return r.literal && r.constant ? r : function(e, n) {
					return i.getTrusted(t, r(e, n))
				}
			};
			var a = i.parseAs,
				s = i.getTrusted,
				u = i.trustAs;
			return o(Si, function(t, e) {
				var n = dr(e);
				i[ce("parse_as_" + n)] = function(e) {
					return a(t, e)
				}, i[ce("get_trusted_" + n)] = function(e) {
					return s(t, e)
				}, i[ce("trust_as_" + n)] = function(e) {
					return u(t, e)
				}
			}), i
		}]
	}
	function qn() {
		this.$get = ["$window", "$document", function(t, e) {
			var n, r, i = {}, o = h((/android (\d+)/.exec(dr((t.navigator || {}).userAgent)) || [])[1]),
				a = /Boxee/i.test((t.navigator || {}).userAgent),
				s = e[0] || {}, u = s.documentMode,
				c = /^(Moz|webkit|O|ms)(?=[A-Z])/,
				l = s.body && s.body.style,
				f = !1,
				p = !1;
			if (l) {
				for (var $ in l) if (r = c.exec($)) {
					n = r[0], n = n.substr(0, 1).toUpperCase() + n.substr(1);
					break
				}
				n || (n = "WebkitOpacity" in l && "webkit"), f = !! ("transition" in l || n + "Transition" in l), p = !! ("animation" in l || n + "Animation" in l), !o || f && p || (f = w(s.body.style.webkitTransition), p = w(s.body.style.webkitAnimation))
			}
			return {
				history: !(!t.history || !t.history.pushState || 4 > o || a),
				hashchange: "onhashchange" in t && (!u || u > 7),
				hasEvent: function(t) {
					if ("input" == t && 9 == wr) return !1;
					if (g(i[t])) {
						var e = s.createElement("div");
						i[t] = "on" + t in e
					}
					return i[t]
				},
				csp: jr(),
				vendorPrefix: n,
				transitions: f,
				animations: p,
				android: o,
				msie: wr,
				msieDocumentMode: u
			}
		}]
	}
	function Un() {
		this.$get = ["$rootScope", "$browser", "$q", "$exceptionHandler", function(t, e, n, r) {
			function i(i, a, s) {
				var u, c = n.defer(),
					l = c.promise,
					f = m(s) && !s;
				return u = e.defer(function() {
					try {
						c.resolve(i())
					} catch (e) {
						c.reject(e), r(e)
					} finally {
						delete o[l.$$timeoutId]
					}
					f || t.$apply()
				}, a), l.$$timeoutId = u, o[u] = c, l
			}
			var o = {};
			return i.cancel = function(t) {
				return t && t.$$timeoutId in o ? (o[t.$$timeoutId].reject("canceled"), delete o[t.$$timeoutId], e.defer.cancel(t.$$timeoutId)) : !1
			}, i
		}]
	}
	function Vn(t) {
		var e = t;
		return wr && (Ci.setAttribute("href", e), e = Ci.href), Ci.setAttribute("href", e), {
			href: Ci.href,
			protocol: Ci.protocol ? Ci.protocol.replace(/:$/, "") : "",
			host: Ci.host,
			search: Ci.search ? Ci.search.replace(/^\?/, "") : "",
			hash: Ci.hash ? Ci.hash.replace(/^#/, "") : "",
			hostname: Ci.hostname,
			port: Ci.port,
			pathname: "/" === Ci.pathname.charAt(0) ? Ci.pathname : "/" + Ci.pathname
		}
	}
	function In(t) {
		var e = w(t) ? Vn(t) : t;
		return e.protocol === ki.protocol && e.host === ki.host
	}
	function Fn() {
		this.$get = v(t)
	}
	function Ln(t) {
		function e(r, i) {
			if (y(r)) {
				var a = {};
				return o(r, function(t, n) {
					a[n] = e(n, t)
				}), a
			}
			return t.factory(r + n, i)
		}
		var n = "Filter";
		this.register = e, this.$get = ["$injector", function(t) {
			return function(e) {
				return t.get(e + n)
			}
		}], e("currency", Bn), e("date", Yn), e("filter", Hn), e("json", Zn), e("limitTo", tr), e("lowercase", Mi), e("number", zn), e("orderBy", er), e("uppercase", Ni)
	}
	function Hn() {
		return function(t, e, n) {
			if (!Nr(t)) return t;
			var r = typeof n,
				i = [];
			i.check = function(t) {
				for (var e = 0; e < i.length; e++) if (!i[e](t)) return !1;
				return !0
			}, "function" !== r && (n = "boolean" === r && n ? function(t, e) {
				return Tr.equals(t, e)
			} : function(t, e) {
				if (t && e && "object" == typeof t && "object" == typeof e) {
					for (var r in t) if ("$" !== r.charAt(0) && vr.call(t, r) && n(t[r], e[r])) return !0;
					return !1
				}
				return e = ("" + e).toLowerCase(), ("" + t).toLowerCase().indexOf(e) > -1
			});
			var o = function(t, e) {
				if ("string" == typeof e && "!" === e.charAt(0)) return !o(t, e.substr(1));
				switch (typeof t) {
					case "boolean":
					case "number":
					case "string":
						return n(t, e);
					case "object":
						switch (typeof e) {
							case "object":
								return n(t, e);
							default:
								for (var r in t) if ("$" !== r.charAt(0) && o(t[r], e)) return !0
						}
						return !1;
					case "array":
						for (var i = 0; i < t.length; i++) if (o(t[i], e)) return !0;
						return !1;
					default:
						return !1
				}
			};
			switch (typeof e) {
				case "boolean":
				case "number":
				case "string":
					e = {
						$: e
					};
				case "object":
					for (var a in e)! function(t) {
						"undefined" != typeof e[t] && i.push(function(n) {
							return o("$" == t ? n : n && n[t], e[t])
						})
					}(a);
					break;
				case "function":
					i.push(e);
					break;
				default:
					return t
			}
			for (var s = [], u = 0; u < t.length; u++) {
				var c = t[u];
				i.check(c) && s.push(c)
			}
			return s
		}
	}
	function Bn(t) {
		var e = t.NUMBER_FORMATS;
		return function(t, n) {
			return g(n) && (n = e.CURRENCY_SYM), Wn(t, e.PATTERNS[1], e.GROUP_SEP, e.DECIMAL_SEP, 2).replace(/\u00A4/g, n)
		}
	}
	function zn(t) {
		var e = t.NUMBER_FORMATS;
		return function(t, n) {
			return Wn(t, e.PATTERNS[0], e.GROUP_SEP, e.DECIMAL_SEP, n)
		}
	}
	function Wn(t, e, n, r, i) {
		if (null == t || !isFinite(t) || y(t)) return "";
		var o = 0 > t;
		t = Math.abs(t);
		var a = t + "",
			s = "",
			u = [],
			c = !1;
		if (-1 !== a.indexOf("e")) {
			var l = a.match(/([\d\.]+)e(-?)(\d+)/);
			l && "-" == l[2] && l[3] > i + 1 ? (a = "0", t = 0) : (s = a, c = !0)
		}
		if (c) i > 0 && t > -1 && 1 > t && (s = t.toFixed(i));
		else {
			var f = (a.split(Ei)[1] || "").length;
			g(i) && (i = Math.min(Math.max(e.minFrac, f), e.maxFrac)), t = +(Math.round(+(t.toString() + "e" + i)).toString() + "e" + -i), 0 === t && (o = !1);
			var h = ("" + t).split(Ei),
				p = h[0];
			h = h[1] || "";
			var $, d = 0,
				v = e.lgSize,
				m = e.gSize;
			if (p.length >= v + m) for (d = p.length - v, $ = 0; d > $; $++)(d - $) % m === 0 && 0 !== $ && (s += n), s += p.charAt($);
			for ($ = d; $ < p.length; $++)(p.length - $) % v === 0 && 0 !== $ && (s += n), s += p.charAt($);
			for (; h.length < i;) h += "0";
			i && "0" !== i && (s += r + h.substr(0, i))
		}
		return u.push(o ? e.negPre : e.posPre), u.push(s), u.push(o ? e.negSuf : e.posSuf), u.join("")
	}
	function Qn(t, e, n) {
		var r = "";
		for (0 > t && (r = "-", t = -t), t = "" + t; t.length < e;) t = "0" + t;
		return n && (t = t.substr(t.length - e)), r + t
	}
	function Jn(t, e, n, r) {
		return n = n || 0,
		function(i) {
			var o = i["get" + t]();
			return (n > 0 || o > -n) && (o += n), 0 === o && -12 == n && (o = 12), Qn(o, e, r)
		}
	}
	function Gn(t, e) {
		return function(n, r) {
			var i = n["get" + t](),
				o = gr(e ? "SHORT" + t : t);
			return r[o][i]
		}
	}
	function Xn(t) {
		var e = -1 * t.getTimezoneOffset(),
			n = e >= 0 ? "+" : "";
		return n += Qn(Math[e > 0 ? "floor" : "ceil"](e / 60), 2) + Qn(Math.abs(e % 60), 2)
	}
	function Kn(t, e) {
		return t.getHours() < 12 ? e.AMPMS[0] : e.AMPMS[1]
	}
	function Yn(t) {
		function e(t) {
			var e;
			if (e = t.match(n)) {
				var r = new Date(0),
					i = 0,
					o = 0,
					a = e[8] ? r.setUTCFullYear : r.setFullYear,
					s = e[8] ? r.setUTCHours : r.setHours;
				e[9] && (i = h(e[9] + e[10]), o = h(e[9] + e[11])), a.call(r, h(e[1]), h(e[2]) - 1, h(e[3]));
				var u = h(e[4] || 0) - i,
					c = h(e[5] || 0) - o,
					l = h(e[6] || 0),
					f = Math.round(1e3 * parseFloat("0." + (e[7] || 0)));
				return s.call(r, u, c, l, f), r
			}
			return t
		}
		var n = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
		return function(n, r) {
			var i, a, s = "",
				u = [];
			if (r = r || "mediumDate", r = t.DATETIME_FORMATS[r] || r, w(n) && (n = Ti.test(n) ? h(n) : e(n)), b(n) && (n = new Date(n)), !x(n)) return n;
			for (; r;) a = Oi.exec(r), a ? (u = U(u, a, 1), r = u.pop()) : (u.push(r), r = null);
			return o(u, function(e) {
				i = Ai[e], s += i ? i(n, t.DATETIME_FORMATS) : e.replace(/(^'|'$)/g, "").replace(/''/g, "'")
			}), s
		}
	}
	function Zn() {
		return function(t) {
			return L(t, !0)
		}
	}
	function tr() {
		return function(t, e) {
			if (!Nr(t) && !w(t)) return t;
			if (e = 1 / 0 === Math.abs(Number(e)) ? Number(e) : h(e), w(t)) return e ? e >= 0 ? t.slice(0, e) : t.slice(e, t.length) : "";
			var n, r, i = [];
			for (e > t.length ? e = t.length : e < -t.length && (e = -t.length), e > 0 ? (n = 0, r = e) : (n = t.length + e, r = t.length); r > n; n++) i.push(t[n]);
			return i
		}
	}
	function er(t) {
		return function(e, n, r) {
			function o(t, e) {
				for (var r = 0; r < n.length; r++) {
					var i = n[r](t, e);
					if (0 !== i) return i
				}
				return 0
			}
			function a(t, e) {
				return B(e) ? function(e, n) {
					return t(n, e)
				} : t
			}
			function s(t, e) {
				var n = typeof t,
					r = typeof e;
				return n == r ? (x(t) && x(e) && (t = t.valueOf(), e = e.valueOf()), "string" == n && (t = t.toLowerCase(), e = e.toLowerCase()), t === e ? 0 : e > t ? -1 : 1) : r > n ? -1 : 1
			}
			return i(e) ? (n = Nr(n) ? n : [n], 0 === n.length && (n = ["+"]), n = N(n, function(e) {
				var n = !1,
					r = e || d;
				if (w(e)) {
					if (("+" == e.charAt(0) || "-" == e.charAt(0)) && (n = "-" == e.charAt(0), e = e.substring(1)), "" === e) return a(function(t, e) {
						return s(t, e)
					}, n);
					if (r = t(e), r.constant) {
						var i = r();
						return a(function(t, e) {
							return s(t[i], e[i])
						}, n)
					}
				}
				return a(function(t, e) {
					return s(r(t), r(e))
				}, n)
			}), kr.call(e).sort(a(o, r))) : e
		}
	}
	function nr(t) {
		return S(t) && (t = {
			link: t
		}), t.restrict = t.restrict || "AC", v(t)
	}
	function rr(t, e, n, r) {
		function i(e, n) {
			n = n ? "-" + Z(n, "-") : "", r.setClass(t, (e ? Bi : zi) + n, (e ? zi : Bi) + n)
		}
		var a = this,
			s = t.parent().controller("form") || Di,
			u = 0,
			c = a.$error = {}, l = [];
		a.$name = e.name || e.ngForm, a.$dirty = !1, a.$pristine = !0, a.$valid = !0, a.$invalid = !1, s.$addControl(a), t.addClass(Wi), i(!0), a.$addControl = function(t) {
			re(t.$name, "input"), l.push(t), t.$name && (a[t.$name] = t)
		}, a.$removeControl = function(t) {
			t.$name && a[t.$name] === t && delete a[t.$name], o(c, function(e, n) {
				a.$setValidity(n, !0, t)
			}), D(l, t)
		}, a.$setValidity = function(t, e, n) {
			var r = c[t];
			if (e) r && (D(r, n), r.length || (u--, u || (i(e), a.$valid = !0, a.$invalid = !1), c[t] = !1, i(!0, t), s.$setValidity(t, !0, a)));
			else {
				if (u || i(e), r) {
					if (P(r, n)) return
				} else c[t] = r = [], u++, i(!1, t), s.$setValidity(t, !1, a);
				r.push(n), a.$valid = !1, a.$invalid = !0
			}
		}, a.$setDirty = function() {
			r.removeClass(t, Wi), r.addClass(t, Qi), a.$dirty = !0, a.$pristine = !1, s.$setDirty()
		}, a.$setPristine = function() {
			r.removeClass(t, Qi), r.addClass(t, Wi), a.$dirty = !1, a.$pristine = !0, o(l, function(t) {
				t.$setPristine()
			})
		}
	}
	function ir(t, e, r, i) {
		return t.$setValidity(e, r), r ? i : n
	}
	function or(t, e) {
		var n, r;
		if (e) for (n = 0; n < e.length; ++n) if (r = e[n], t[r]) return !0;
		return !1
	}
	function ar(t, e, n, r, i) {
		if (y(i)) {
			t.$$hasNativeValidators = !0;
			var o = function(o) {
				return t.$error[e] || or(i, r) || !or(i, n) ? o : void t.$setValidity(e, !1)
			};
			t.$parsers.push(o)
		}
	}
	function sr(t, e, n, i, o, a) {
		var s = e.prop($r),
			u = e[0].placeholder,
			c = {}, l = dr(e[0].type);
		if (i.$$validityState = s, !o.android) {
			var f = !1;
			e.on("compositionstart", function() {
				f = !0
			}), e.on("compositionend", function() {
				f = !1, p()
			})
		}
		var p = function(r) {
			if (!f) {
				var o = e.val();
				if (wr && "input" === (r || c).type && e[0].placeholder !== u) return void(u = e[0].placeholder);
				"password" !== l && B(n.ngTrim || "T") && (o = Pr(o));
				var a = s && i.$$hasNativeValidators;
				(i.$viewValue !== o || "" === o && a) && (t.$root.$$phase ? i.$setViewValue(o) : t.$apply(function() {
					i.$setViewValue(o)
				}))
			}
		};
		if (o.hasEvent("input")) e.on("input", p);
		else {
			var $, d = function() {
				$ || ($ = a.defer(function() {
					p(), $ = null
				}))
			};
			e.on("keydown", function(t) {
				var e = t.keyCode;
				91 === e || e > 15 && 19 > e || e >= 37 && 40 >= e || d()
			}), o.hasEvent("paste") && e.on("paste cut", d)
		}
		e.on("change", p), i.$render = function() {
			e.val(i.$isEmpty(i.$viewValue) ? "" : i.$viewValue)
		};
		var v, g, m = n.ngPattern;
		if (m) {
			var y = function(t, e) {
				return ir(i, "pattern", i.$isEmpty(e) || t.test(e), e)
			};
			g = m.match(/^\/(.*)\/([gim]*)$/), g ? (m = new RegExp(g[1], g[2]), v = function(t) {
				return y(m, t)
			}) : v = function(n) {
				var i = t.$eval(m);
				if (!i || !i.test) throw r("ngPattern")("noregexp", "Expected {0} to be a RegExp but was {1}. Element: {2}", m, i, z(e));
				return y(i, n)
			}, i.$formatters.push(v), i.$parsers.push(v)
		}
		if (n.ngMinlength) {
			var w = h(n.ngMinlength),
				b = function(t) {
					return ir(i, "minlength", i.$isEmpty(t) || t.length >= w, t)
				};
			i.$parsers.push(b), i.$formatters.push(b)
		}
		if (n.ngMaxlength) {
			var x = h(n.ngMaxlength),
				S = function(t) {
					return ir(i, "maxlength", i.$isEmpty(t) || t.length <= x, t)
				};
			i.$parsers.push(S), i.$formatters.push(S)
		}
	}
	function ur(t, e, r, i, o, a) {
		if (sr(t, e, r, i, o, a), i.$parsers.push(function(t) {
			var e = i.$isEmpty(t);
			return e || Ii.test(t) ? (i.$setValidity("number", !0), "" === t ? null : e ? t : parseFloat(t)) : (i.$setValidity("number", !1), n)
		}), ar(i, "number", Li, null, i.$$validityState), i.$formatters.push(function(t) {
			return i.$isEmpty(t) ? "" : "" + t
		}), r.min) {
			var s = function(t) {
				var e = parseFloat(r.min);
				return ir(i, "min", i.$isEmpty(t) || t >= e, t)
			};
			i.$parsers.push(s), i.$formatters.push(s)
		}
		if (r.max) {
			var u = function(t) {
				var e = parseFloat(r.max);
				return ir(i, "max", i.$isEmpty(t) || e >= t, t)
			};
			i.$parsers.push(u), i.$formatters.push(u)
		}
		i.$formatters.push(function(t) {
			return ir(i, "number", i.$isEmpty(t) || b(t), t)
		})
	}
	function cr(t, e, n, r, i, o) {
		sr(t, e, n, r, i, o);
		var a = function(t) {
			return ir(r, "url", r.$isEmpty(t) || Ui.test(t), t)
		};
		r.$formatters.push(a), r.$parsers.push(a)
	}
	function lr(t, e, n, r, i, o) {
		sr(t, e, n, r, i, o);
		var a = function(t) {
			return ir(r, "email", r.$isEmpty(t) || Vi.test(t), t)
		};
		r.$formatters.push(a), r.$parsers.push(a)
	}
	function fr(t, e, n, r) {
		g(n.name) && e.attr("name", c()), e.on("click", function() {
			e[0].checked && t.$apply(function() {
				r.$setViewValue(n.value)
			})
		}), r.$render = function() {
			var t = n.value;
			e[0].checked = t == r.$viewValue
		}, n.$observe("value", r.$render)
	}
	function hr(t, e, n, r) {
		var i = n.ngTrueValue,
			o = n.ngFalseValue;
		w(i) || (i = !0), w(o) || (o = !1), e.on("click", function() {
			t.$apply(function() {
				r.$setViewValue(e[0].checked)
			})
		}), r.$render = function() {
			e[0].checked = r.$viewValue
		}, r.$isEmpty = function(t) {
			return t !== i
		}, r.$formatters.push(function(t) {
			return t === i
		}), r.$parsers.push(function(t) {
			return t ? i : o
		})
	}
	function pr(t, e) {
		return t = "ngClass" + t, ["$animate", function(n) {
			function r(t, e) {
				var n = [];
				t: for (var r = 0; r < t.length; r++) {
					for (var i = t[r], o = 0; o < e.length; o++) if (i == e[o]) continue t;
					n.push(i)
				}
				return n
			}
			function i(t) {
				if (Nr(t)) return t;
				if (w(t)) return t.split(" ");
				if (y(t)) {
					var e = [];
					return o(t, function(t, n) {
						t && (e = e.concat(n.split(" ")))
					}), e
				}
				return t
			}
			return {
				restrict: "AC",
				link: function(a, s, u) {
					function c(t) {
						var e = f(t, 1);
						u.$addClass(e)
					}
					function l(t) {
						var e = f(t, -1);
						u.$removeClass(e)
					}
					function f(t, e) {
						var n = s.data("$classCounts") || {}, r = [];
						return o(t, function(t) {
							(e > 0 || n[t]) && (n[t] = (n[t] || 0) + e, n[t] === +(e > 0) && r.push(t))
						}), s.data("$classCounts", n), r.join(" ")
					}
					function h(t, e) {
						var i = r(e, t),
							o = r(t, e);
						o = f(o, -1), i = f(i, 1), 0 === i.length ? n.removeClass(s, o) : 0 === o.length ? n.addClass(s, i) : n.setClass(s, i, o)
					}
					function p(t) {
						if (e === !0 || a.$index % 2 === e) {
							var n = i(t || []);
							if ($) {
								if (!q(t, $)) {
									var r = i($);
									h(r, n)
								}
							} else c(n)
						}
						$ = _(t)
					}
					var $;
					a.$watch(u[t], p, !0), u.$observe("class", function() {
						p(a.$eval(u[t]))
					}), "ngClass" !== t && a.$watch("$index", function(n, r) {
						var o = 1 & n;
						if (o !== (1 & r)) {
							var s = i(a.$eval(u[t]));
							o === e ? c(s) : l(s)
						}
					})
				}
			}
		}]
	}
	var $r = "validity",
		dr = function(t) {
			return w(t) ? t.toLowerCase() : t
		}, vr = Object.prototype.hasOwnProperty,
		gr = function(t) {
			return w(t) ? t.toUpperCase() : t
		}, mr = function(t) {
			return w(t) ? t.replace(/[A-Z]/g, function(t) {
				return String.fromCharCode(32 | t.charCodeAt(0))
			}) : t
		}, yr = function(t) {
			return w(t) ? t.replace(/[a-z]/g, function(t) {
				return String.fromCharCode(-33 & t.charCodeAt(0))
			}) : t
		};
	"i" !== "I".toLowerCase() && (dr = mr, gr = yr);
	var wr, br, xr, Sr, Cr, kr = [].slice,
		Er = [].push,
		Ar = Object.prototype.toString,
		Or = r("ng"),
		Tr = t.angular || (t.angular = {}),
		Mr = ["0", "0", "0"];
	wr = h((/msie (\d+)/.exec(dr(navigator.userAgent)) || [])[1]), isNaN(wr) && (wr = h((/trident\/.*; rv:(\d+)/.exec(dr(navigator.userAgent)) || [])[1])), $.$inject = [], d.$inject = [];
	var Nr = function() {
		return S(Array.isArray) ? Array.isArray : function(t) {
			return "[object Array]" === Ar.call(t)
		}
	}(),
		Pr = function() {
			return String.prototype.trim ? function(t) {
				return w(t) ? t.trim() : t
			} : function(t) {
				return w(t) ? t.replace(/^\s\s*/, "").replace(/\s\s*$/, "") : t
			}
		}();
	Cr = 9 > wr ? function(t) {
		return t = t.nodeName ? t : t[0], t.scopeName && "HTML" != t.scopeName ? gr(t.scopeName + ":" + t.nodeName) : t.nodeName
	} : function(t) {
		return t.nodeName ? t.nodeName : t[0].nodeName
	};
	var jr = function() {
		if (m(jr.isActive_)) return jr.isActive_;
		var t = !(!e.querySelector("[ng-csp]") && !e.querySelector("[data-ng-csp]"));
		if (!t) try {
			new Function("")
		} catch (n) {
			t = !0
		}
		return jr.isActive_ = t
	}, Dr = /[A-Z]/g,
		Rr = {
			full: "1.2.27",
			major: 1,
			minor: 2,
			dot: 27,
			codeName: "prime-factorization"
		};
	$e.expando = "ng339";
	var _r = $e.cache = {}, qr = 1,
		Ur = t.document.addEventListener ? function(t, e, n) {
			t.addEventListener(e, n, !1)
		} : function(t, e, n) {
			t.attachEvent("on" + e, n)
		}, Vr = t.document.removeEventListener ? function(t, e, n) {
			t.removeEventListener(e, n, !1)
		} : function(t, e, n) {
			t.detachEvent("on" + e, n)
		}, Ir = ($e._data = function(t) {
			return this.cache[t[this.expando]] || {}
		}, /([\:\-\_]+(.))/g),
		Fr = /^moz([A-Z])/,
		Lr = r("jqLite"),
		Hr = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
		Br = /<|&#?\w+;/,
		zr = /<([\w:]+)/,
		Wr = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
		Qr = {
			option: [1, '<select multiple="multiple">', "</select>"],
			thead: [1, "<table>", "</table>"],
			col: [2, "<table><colgroup>", "</colgroup></table>"],
			tr: [2, "<table><tbody>", "</tbody></table>"],
			td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
			_default: [0, "", ""]
		};
	Qr.optgroup = Qr.option, Qr.tbody = Qr.tfoot = Qr.colgroup = Qr.caption = Qr.thead, Qr.th = Qr.td;
	var Jr = $e.prototype = {
		ready: function(n) {
			function r() {
				i || (i = !0, n())
			}
			var i = !1;
			"complete" === e.readyState ? setTimeout(r) : (this.on("DOMContentLoaded", r), $e(t).on("load", r))
		},
		toString: function() {
			var t = [];
			return o(this, function(e) {
				t.push("" + e)
			}), "[" + t.join(", ") + "]"
		},
		eq: function(t) {
			return br(t >= 0 ? this[t] : this[this.length + t])
		},
		length: 0,
		push: Er,
		sort: [].sort,
		splice: [].splice
	}, Gr = {};
	o("multiple,selected,checked,disabled,readOnly,required,open".split(","), function(t) {
		Gr[dr(t)] = t
	});
	var Xr = {};
	o("input,select,option,textarea,button,form,details".split(","), function(t) {
		Xr[gr(t)] = !0
	}), o({
		data: we,
		removeData: me
	}, function(t, e) {
		$e[e] = t
	}), o({
		data: we,
		inheritedData: Ee,
		scope: function(t) {
			return br.data(t, "$scope") || Ee(t.parentNode || t, ["$isolateScope", "$scope"])
		},
		isolateScope: function(t) {
			return br.data(t, "$isolateScope") || br.data(t, "$isolateScopeNoTemplate")
		},
		controller: ke,
		injector: function(t) {
			return Ee(t, "$injector")
		},
		removeAttr: function(t, e) {
			t.removeAttribute(e)
		},
		hasClass: be,
		css: function(t, e, r) {
			if (e = ce(e), !m(r)) {
				var i;
				return 8 >= wr && (i = t.currentStyle && t.currentStyle[e], "" === i && (i = "auto")), i = i || t.style[e], 8 >= wr && (i = "" === i ? n : i), i
			}
			t.style[e] = r
		},
		attr: function(t, e, r) {
			var i = dr(e);
			if (Gr[i]) {
				if (!m(r)) return t[e] || (t.attributes.getNamedItem(e) || $).specified ? i : n;
				r ? (t[e] = !0, t.setAttribute(e, i)) : (t[e] = !1, t.removeAttribute(i))
			} else if (m(r)) t.setAttribute(e, r);
			else if (t.getAttribute) {
				var o = t.getAttribute(e, 2);
				return null === o ? n : o
			}
		},
		prop: function(t, e, n) {
			return m(n) ? void(t[e] = n) : t[e]
		},
		text: function() {
			function t(t, n) {
				var r = e[t.nodeType];
				return g(n) ? r ? t[r] : "" : void(t[r] = n)
			}
			var e = [];
			return 9 > wr ? (e[1] = "innerText", e[3] = "nodeValue") : e[1] = e[3] = "textContent", t.$dv = "", t
		}(),
		val: function(t, e) {
			if (g(e)) {
				if ("SELECT" === Cr(t) && t.multiple) {
					var n = [];
					return o(t.options, function(t) {
						t.selected && n.push(t.value || t.text)
					}), 0 === n.length ? null : n
				}
				return t.value
			}
			t.value = e
		},
		html: function(t, e) {
			if (g(e)) return t.innerHTML;
			for (var n = 0, r = t.childNodes; n < r.length; n++) ve(r[n]);
			t.innerHTML = e
		},
		empty: Ae
	}, function(t, e) {
		$e.prototype[e] = function(e, r) {
			var i, o, a = this.length;
			if (t !== Ae && (2 == t.length && t !== be && t !== ke ? e : r) === n) {
				if (y(e)) {
					for (i = 0; a > i; i++) if (t === we) t(this[i], e);
					else for (o in e) t(this[i], o, e[o]);
					return this
				}
				for (var s = t.$dv, u = s === n ? Math.min(a, 1) : a, c = 0; u > c; c++) {
					var l = t(this[c], e, r);
					s = s ? s + l : l
				}
				return s
			}
			for (i = 0; a > i; i++) t(this[i], e, r);
			return this
		}
	}), o({
		removeData: me,
		dealoc: ve,
		on: function Po(t, n, r, i) {
			if (m(i)) throw Lr("onargs", "jqLite#on() does not support the `selector` or `eventData` parameters");
			var a = ye(t, "events"),
				s = ye(t, "handle");
			a || ye(t, "events", a = {}), s || ye(t, "handle", s = Te(t, a)), o(n.split(" "), function(n) {
				var i = a[n];
				if (!i) {
					if ("mouseenter" == n || "mouseleave" == n) {
						var o = e.body.contains || e.body.compareDocumentPosition ? function(t, e) {
								var n = 9 === t.nodeType ? t.documentElement : t,
									r = e && e.parentNode;
								return t === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : t.compareDocumentPosition && 16 & t.compareDocumentPosition(r)))
							} : function(t, e) {
								if (e) for (; e = e.parentNode;) if (e === t) return !0;
								return !1
							};
						a[n] = [];
						var u = {
							mouseleave: "mouseout",
							mouseenter: "mouseover"
						};
						Po(t, u[n], function(t) {
							var e = this,
								r = t.relatedTarget;
							(!r || r !== e && !o(e, r)) && s(t, n)
						})
					} else Ur(t, n, s), a[n] = [];
					i = a[n]
				}
				i.push(r)
			})
		},
		off: ge,
		one: function(t, e, n) {
			t = br(t), t.on(e, function r() {
				t.off(e, n), t.off(e, r)
			}), t.on(e, n)
		},
		replaceWith: function(t, e) {
			var n, r = t.parentNode;
			ve(t), o(new $e(e), function(e) {
				n ? r.insertBefore(e, n.nextSibling) : r.replaceChild(e, t), n = e
			})
		},
		children: function(t) {
			var e = [];
			return o(t.childNodes, function(t) {
				1 === t.nodeType && e.push(t)
			}), e
		},
		contents: function(t) {
			return t.contentDocument || t.childNodes || []
		},
		append: function(t, e) {
			o(new $e(e), function(e) {
				(1 === t.nodeType || 11 === t.nodeType) && t.appendChild(e)
			})
		},
		prepend: function(t, e) {
			if (1 === t.nodeType) {
				var n = t.firstChild;
				o(new $e(e), function(e) {
					t.insertBefore(e, n)
				})
			}
		},
		wrap: function(t, e) {
			e = br(e)[0];
			var n = t.parentNode;
			n && n.replaceChild(e, t), e.appendChild(t)
		},
		remove: function(t) {
			ve(t);
			var e = t.parentNode;
			e && e.removeChild(t)
		},
		after: function(t, e) {
			var n = t,
				r = t.parentNode;
			o(new $e(e), function(t) {
				r.insertBefore(t, n.nextSibling), n = t
			})
		},
		addClass: Se,
		removeClass: xe,
		toggleClass: function(t, e, n) {
			e && o(e.split(" "), function(e) {
				var r = n;
				g(r) && (r = !be(t, e)), (r ? Se : xe)(t, e)
			})
		},
		parent: function(t) {
			var e = t.parentNode;
			return e && 11 !== e.nodeType ? e : null
		},
		next: function(t) {
			if (t.nextElementSibling) return t.nextElementSibling;
			for (var e = t.nextSibling; null != e && 1 !== e.nodeType;) e = e.nextSibling;
			return e
		},
		find: function(t, e) {
			return t.getElementsByTagName ? t.getElementsByTagName(e) : []
		},
		clone: de,
		triggerHandler: function(t, e, n) {
			var r, i, a, s = e.type || e,
				u = (ye(t, "events") || {})[s];
			u && (r = {
				preventDefault: function() {
					this.defaultPrevented = !0
				},
				isDefaultPrevented: function() {
					return this.defaultPrevented === !0
				},
				stopPropagation: $,
				type: s,
				target: t
			}, e.type && (r = f(r, e)), i = _(u), a = n ? [r].concat(n) : [r], o(i, function(e) {
				e.apply(t, a)
			}))
		}
	}, function(t, e) {
		$e.prototype[e] = function(e, n, r) {
			for (var i, o = 0; o < this.length; o++) g(i) ? (i = t(this[o], e, n, r), m(i) && (i = br(i))) : Ce(i, t(this[o], e, n, r));
			return m(i) ? i : this
		}, $e.prototype.bind = $e.prototype.on, $e.prototype.unbind = $e.prototype.off
	}), Ne.prototype = {
		put: function(t, e) {
			this[Me(t, this.nextUid)] = e
		},
		get: function(t) {
			return this[Me(t, this.nextUid)]
		},
		remove: function(t) {
			var e = this[t = Me(t, this.nextUid)];
			return delete this[t], e
		}
	};
	var Kr = /^function\s*[^\(]*\(\s*([^\)]*)\)/m,
		Yr = /,/,
		Zr = /^\s*(_?)(\S+?)\1\s*$/,
		ti = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
		ei = r("$injector"),
		ni = r("$animate"),
		ri = ["$provide", function(t) {
			this.$$selectors = {}, this.register = function(e, n) {
				var r = e + "-animation";
				if (e && "." != e.charAt(0)) throw ni("notcsel", "Expecting class selector starting with '.' got '{0}'.", e);
				this.$$selectors[e.substr(1)] = r, t.factory(r, n)
			}, this.classNameFilter = function(t) {
				return 1 === arguments.length && (this.$$classNameFilter = t instanceof RegExp ? t : null), this.$$classNameFilter
			}, this.$get = ["$timeout", "$$asyncCallback", function(t, e) {
				function n(t) {
					t && e(t)
				}
				return {
					enter: function(t, e, r, i) {
						r ? r.after(t) : (e && e[0] || (e = r.parent()), e.append(t)), n(i)
					},
					leave: function(t, e) {
						t.remove(), n(e)
					},
					move: function(t, e, n, r) {
						this.enter(t, e, n, r)
					},
					addClass: function(t, e, r) {
						e = w(e) ? e : Nr(e) ? e.join(" ") : "", o(t, function(t) {
							Se(t, e)
						}), n(r)
					},
					removeClass: function(t, e, r) {
						e = w(e) ? e : Nr(e) ? e.join(" ") : "", o(t, function(t) {
							xe(t, e)
						}), n(r)
					},
					setClass: function(t, e, r, i) {
						o(t, function(t) {
							Se(t, e), xe(t, r)
						}), n(i)
					},
					enabled: $
				}
			}]
		}],
		ii = r("$compile");
	Ie.$inject = ["$provide", "$$sanitizeUriProvider"];
	var oi = /^(x[\:\-_]|data[\:\-_])/i,
		ai = r("$interpolate"),
		si = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/,
		ui = {
			http: 80,
			https: 443,
			ftp: 21
		}, ci = r("$location");
	pn.prototype = hn.prototype = fn.prototype = {
		$$html5: !1,
		$$replace: !1,
		absUrl: $n("$$absUrl"),
		url: function(t) {
			if (g(t)) return this.$$url;
			var e = si.exec(t);
			return e[1] && this.path(decodeURIComponent(e[1])), (e[2] || e[1]) && this.search(e[3] || ""), this.hash(e[5] || ""), this
		},
		protocol: $n("$$protocol"),
		host: $n("$$host"),
		port: $n("$$port"),
		path: dn("$$path", function(t) {
			return t = null !== t ? t.toString() : "", "/" == t.charAt(0) ? t : "/" + t
		}),
		search: function(t, e) {
			switch (arguments.length) {
				case 0:
					return this.$$search;
				case 1:
					if (w(t) || b(t)) t = t.toString(), this.$$search = Q(t);
					else {
						if (!y(t)) throw ci("isrcharg", "The first argument of the `$location#search()` call must be a string or an object.");
						o(t, function(e, n) {
							null == e && delete t[n]
						}), this.$$search = t
					}
					break;
				default:
					g(e) || null === e ? delete this.$$search[t] : this.$$search[t] = e
			}
			return this.$$compose(), this
		},
		hash: dn("$$hash", function(t) {
			return null !== t ? t.toString() : ""
		}),
		replace: function() {
			return this.$$replace = !0, this
		}
	};
	var li, fi = r("$parse"),
		hi = {}, pi = Function.prototype.call,
		$i = Function.prototype.apply,
		di = Function.prototype.bind,
		vi = {
			"null": function() {
				return null
			},
			"true": function() {
				return !0
			},
			"false": function() {
				return !1
			},
			undefined: $,
			"+": function(t, e, r, i) {
				return r = r(t, e), i = i(t, e), m(r) ? m(i) ? r + i : r : m(i) ? i : n
			},
			"-": function(t, e, n, r) {
				return n = n(t, e), r = r(t, e), (m(n) ? n : 0) - (m(r) ? r : 0)
			},
			"*": function(t, e, n, r) {
				return n(t, e) * r(t, e)
			},
			"/": function(t, e, n, r) {
				return n(t, e) / r(t, e)
			},
			"%": function(t, e, n, r) {
				return n(t, e) % r(t, e)
			},
			"^": function(t, e, n, r) {
				return n(t, e) ^ r(t, e)
			},
			"=": $,
			"===": function(t, e, n, r) {
				return n(t, e) === r(t, e)
			},
			"!==": function(t, e, n, r) {
				return n(t, e) !== r(t, e)
			},
			"==": function(t, e, n, r) {
				return n(t, e) == r(t, e)
			},
			"!=": function(t, e, n, r) {
				return n(t, e) != r(t, e)
			},
			"<": function(t, e, n, r) {
				return n(t, e) < r(t, e)
			},
			">": function(t, e, n, r) {
				return n(t, e) > r(t, e)
			},
			"<=": function(t, e, n, r) {
				return n(t, e) <= r(t, e)
			},
			">=": function(t, e, n, r) {
				return n(t, e) >= r(t, e)
			},
			"&&": function(t, e, n, r) {
				return n(t, e) && r(t, e)
			},
			"||": function(t, e, n, r) {
				return n(t, e) || r(t, e)
			},
			"&": function(t, e, n, r) {
				return n(t, e) & r(t, e)
			},
			"|": function(t, e, n, r) {
				return r(t, e)(t, e, n(t, e))
			},
			"!": function(t, e, n) {
				return !n(t, e)
			}
		}, gi = {
			n: "\n",
			f: "\f",
			r: "\r",
			t: "	",
			v: "",
			"'": "'",
			'"': '"'
		}, mi = function(t) {
			this.options = t
		};
	mi.prototype = {
		constructor: mi,
		lex: function(t) {
			for (this.text = t, this.index = 0, this.ch = n, this.lastCh = ":", this.tokens = []; this.index < this.text.length;) {
				if (this.ch = this.text.charAt(this.index), this.is("\"'")) this.readString(this.ch);
				else if (this.isNumber(this.ch) || this.is(".") && this.isNumber(this.peek())) this.readNumber();
				else if (this.isIdent(this.ch)) this.readIdent();
				else if (this.is("(){}[].,;:?")) this.tokens.push({
					index: this.index,
					text: this.ch
				}), this.index++;
				else {
					if (this.isWhitespace(this.ch)) {
						this.index++;
						continue
					}
					var e = this.ch + this.peek(),
						r = e + this.peek(2),
						i = vi[this.ch],
						o = vi[e],
						a = vi[r];
					a ? (this.tokens.push({
						index: this.index,
						text: r,
						fn: a
					}), this.index += 3) : o ? (this.tokens.push({
						index: this.index,
						text: e,
						fn: o
					}), this.index += 2) : i ? (this.tokens.push({
						index: this.index,
						text: this.ch,
						fn: i
					}), this.index += 1) : this.throwError("Unexpected next character ", this.index, this.index + 1)
				}
				this.lastCh = this.ch
			}
			return this.tokens
		},
		is: function(t) {
			return -1 !== t.indexOf(this.ch)
		},
		was: function(t) {
			return -1 !== t.indexOf(this.lastCh)
		},
		peek: function(t) {
			var e = t || 1;
			return this.index + e < this.text.length ? this.text.charAt(this.index + e) : !1
		},
		isNumber: function(t) {
			return t >= "0" && "9" >= t
		},
		isWhitespace: function(t) {
			return " " === t || "\r" === t || "	" === t || "\n" === t || "" === t || " " === t
		},
		isIdent: function(t) {
			return t >= "a" && "z" >= t || t >= "A" && "Z" >= t || "_" === t || "$" === t
		},
		isExpOperator: function(t) {
			return "-" === t || "+" === t || this.isNumber(t)
		},
		throwError: function(t, e, n) {
			n = n || this.index;
			var r = m(e) ? "s " + e + "-" + this.index + " [" + this.text.substring(e, n) + "]" : " " + n;
			throw fi("lexerr", "Lexer Error: {0} at column{1} in expression [{2}].", t, r, this.text)
		},
		readNumber: function() {
			for (var t = "", e = this.index; this.index < this.text.length;) {
				var n = dr(this.text.charAt(this.index));
				if ("." == n || this.isNumber(n)) t += n;
				else {
					var r = this.peek();
					if ("e" == n && this.isExpOperator(r)) t += n;
					else if (this.isExpOperator(n) && r && this.isNumber(r) && "e" == t.charAt(t.length - 1)) t += n;
					else {
						if (!this.isExpOperator(n) || r && this.isNumber(r) || "e" != t.charAt(t.length - 1)) break;
						this.throwError("Invalid exponent")
					}
				}
				this.index++
			}
			t = 1 * t, this.tokens.push({
				index: e,
				text: t,
				literal: !0,
				constant: !0,
				fn: function() {
					return t
				}
			})
		},
		readIdent: function() {
			for (var t, e, n, r, i = this, o = "", a = this.index; this.index < this.text.length && (r = this.text.charAt(this.index), "." === r || this.isIdent(r) || this.isNumber(r));) "." === r && (t = this.index), o += r, this.index++;
			if (t) for (e = this.index; e < this.text.length;) {
				if (r = this.text.charAt(e), "(" === r) {
					n = o.substr(t - a + 1), o = o.substr(0, t - a), this.index = e;
					break
				}
				if (!this.isWhitespace(r)) break;
				e++
			}
			var s = {
				index: a,
				text: o
			};
			if (vi.hasOwnProperty(o)) s.fn = vi[o], s.literal = !0, s.constant = !0;
			else {
				var u = kn(o, this.options, this.text);
				s.fn = f(function(t, e) {
					return u(t, e)
				}, {
					assign: function(t, e) {
						return bn(t, o, e, i.text, i.options)
					}
				})
			}
			this.tokens.push(s), n && (this.tokens.push({
				index: t,
				text: "."
			}), this.tokens.push({
				index: t + 1,
				text: n
			}))
		},
		readString: function(t) {
			var e = this.index;
			this.index++;
			for (var n = "", r = t, i = !1; this.index < this.text.length;) {
				var o = this.text.charAt(this.index);
				if (r += o, i) {
					if ("u" === o) {
						var a = this.text.substring(this.index + 1, this.index + 5);
						a.match(/[\da-f]{4}/i) || this.throwError("Invalid unicode escape [\\u" + a + "]"), this.index += 4, n += String.fromCharCode(parseInt(a, 16))
					} else {
						var s = gi[o];
						n += s || o
					}
					i = !1
				} else if ("\\" === o) i = !0;
				else {
					if (o === t) return this.index++, void this.tokens.push({
						index: e,
						text: r,
						string: n,
						literal: !0,
						constant: !0,
						fn: function() {
							return n
						}
					});
					n += o
				}
				this.index++
			}
			this.throwError("Unterminated quote", e)
		}
	};
	var yi = function(t, e, n) {
		this.lexer = t, this.$filter = e, this.options = n
	};
	yi.ZERO = f(function() {
		return 0
	}, {
		constant: !0
	}), yi.prototype = {
		constructor: yi,
		parse: function(t) {
			this.text = t, this.tokens = this.lexer.lex(t);
			var e = this.statements();
			return 0 !== this.tokens.length && this.throwError("is an unexpected token", this.tokens[0]), e.literal = !! e.literal, e.constant = !! e.constant, e
		},
		primary: function() {
			var t;
			if (this.expect("(")) t = this.filterChain(), this.consume(")");
			else if (this.expect("[")) t = this.arrayDeclaration();
			else if (this.expect("{")) t = this.object();
			else {
				var e = this.expect();
				t = e.fn, t || this.throwError("not a primary expression", e), t.literal = !! e.literal, t.constant = !! e.constant
			}
			for (var n, r; n = this.expect("(", "[", ".");) "(" === n.text ? (t = this.functionCall(t, r), r = null) : "[" === n.text ? (r = t, t = this.objectIndex(t)) : "." === n.text ? (r = t, t = this.fieldAccess(t)) : this.throwError("IMPOSSIBLE");
			return t
		},
		throwError: function(t, e) {
			throw fi("syntax", "Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].", e.text, t, e.index + 1, this.text, this.text.substring(e.index))
		},
		peekToken: function() {
			if (0 === this.tokens.length) throw fi("ueoe", "Unexpected end of expression: {0}", this.text);
			return this.tokens[0]
		},
		peek: function(t, e, n, r) {
			if (this.tokens.length > 0) {
				var i = this.tokens[0],
					o = i.text;
				if (o === t || o === e || o === n || o === r || !t && !e && !n && !r) return i
			}
			return !1
		},
		expect: function(t, e, n, r) {
			var i = this.peek(t, e, n, r);
			return i ? (this.tokens.shift(), i) : !1
		},
		consume: function(t) {
			this.expect(t) || this.throwError("is unexpected, expecting [" + t + "]", this.peek())
		},
		unaryFn: function(t, e) {
			return f(function(n, r) {
				return t(n, r, e)
			}, {
				constant: e.constant
			})
		},
		ternaryFn: function(t, e, n) {
			return f(function(r, i) {
				return t(r, i) ? e(r, i) : n(r, i)
			}, {
				constant: t.constant && e.constant && n.constant
			})
		},
		binaryFn: function(t, e, n) {
			return f(function(r, i) {
				return e(r, i, t, n)
			}, {
				constant: t.constant && n.constant
			})
		},
		statements: function() {
			for (var t = [];;) if (this.tokens.length > 0 && !this.peek("}", ")", ";", "]") && t.push(this.filterChain()), !this.expect(";")) return 1 === t.length ? t[0] : function(e, n) {
				for (var r, i = 0; i < t.length; i++) {
					var o = t[i];
					o && (r = o(e, n))
				}
				return r
			}
		},
		filterChain: function() {
			for (var t, e = this.expression();;) {
				if (!(t = this.expect("|"))) return e;
				e = this.binaryFn(e, t.fn, this.filter())
			}
		},
		filter: function() {
			for (var t = this.expect(), e = this.$filter(t.text), n = [];;) {
				if (!(t = this.expect(":"))) {
					var r = function(t, r, i) {
						for (var o = [i], a = 0; a < n.length; a++) o.push(n[a](t, r));
						return e.apply(t, o)
					};
					return function() {
						return r
					}
				}
				n.push(this.expression())
			}
		},
		expression: function() {
			return this.assignment()
		},
		assignment: function() {
			var t, e, n = this.ternary();
			return (e = this.expect("=")) ? (n.assign || this.throwError("implies assignment but [" + this.text.substring(0, e.index) + "] can not be assigned to", e), t = this.ternary(), function(e, r) {
				return n.assign(e, t(e, r), r)
			}) : n
		},
		ternary: function() {
			var t, e, n = this.logicalOR();
			return (e = this.expect("?")) ? (t = this.assignment(), (e = this.expect(":")) ? this.ternaryFn(n, t, this.assignment()) : void this.throwError("expected :", e)) : n
		},
		logicalOR: function() {
			for (var t, e = this.logicalAND();;) {
				if (!(t = this.expect("||"))) return e;
				e = this.binaryFn(e, t.fn, this.logicalAND())
			}
		},
		logicalAND: function() {
			var t, e = this.equality();
			return (t = this.expect("&&")) && (e = this.binaryFn(e, t.fn, this.logicalAND())), e
		},
		equality: function() {
			var t, e = this.relational();
			return (t = this.expect("==", "!=", "===", "!==")) && (e = this.binaryFn(e, t.fn, this.equality())), e
		},
		relational: function() {
			var t, e = this.additive();
			return (t = this.expect("<", ">", "<=", ">=")) && (e = this.binaryFn(e, t.fn, this.relational())), e
		},
		additive: function() {
			for (var t, e = this.multiplicative(); t = this.expect("+", "-");) e = this.binaryFn(e, t.fn, this.multiplicative());
			return e
		},
		multiplicative: function() {
			for (var t, e = this.unary(); t = this.expect("*", "/", "%");) e = this.binaryFn(e, t.fn, this.unary());
			return e
		},
		unary: function() {
			var t;
			return this.expect("+") ? this.primary() : (t = this.expect("-")) ? this.binaryFn(yi.ZERO, t.fn, this.unary()) : (t = this.expect("!")) ? this.unaryFn(t.fn, this.unary()) : this.primary()
		},
		fieldAccess: function(t) {
			var e = this,
				n = this.expect().text,
				r = kn(n, this.options, this.text);
			return f(function(e, n, i) {
				return r(i || t(e, n))
			}, {
				assign: function(r, i, o) {
					var a = t(r, o);
					return a || t.assign(r, a = {}), bn(a, n, i, e.text, e.options)
				}
			})
		},
		objectIndex: function(t) {
			var e = this,
				r = this.expression();
			return this.consume("]"), f(function(i, o) {
				var a, s, u = t(i, o),
					c = r(i, o);
				return mn(c, e.text), u ? (a = yn(u[c], e.text), a && a.then && e.options.unwrapPromises && (s = a, "$$v" in a || (s.$$v = n, s.then(function(t) {
					s.$$v = t
				})), a = a.$$v), a) : n
			}, {
				assign: function(n, i, o) {
					var a = mn(r(n, o), e.text),
						s = yn(t(n, o), e.text);
					return s || t.assign(n, s = {}), s[a] = i
				}
			})
		},
		functionCall: function(t, e) {
			var n = [];
			if (")" !== this.peekToken().text) do n.push(this.expression());
			while (this.expect(","));
			this.consume(")");
			var r = this;
			return function(i, o) {
				for (var a = [], s = e ? e(i, o) : i, u = 0; u < n.length; u++) a.push(yn(n[u](i, o), r.text));
				var c = t(i, o, s) || $;
				yn(s, r.text), wn(c, r.text);
				var l = c.apply ? c.apply(s, a) : c(a[0], a[1], a[2], a[3], a[4]);
				return yn(l, r.text)
			}
		},
		arrayDeclaration: function() {
			var t = [],
				e = !0;
			if ("]" !== this.peekToken().text) do {
				if (this.peek("]")) break;
				var n = this.expression();
				t.push(n), n.constant || (e = !1)
			} while (this.expect(","));
			return this.consume("]"), f(function(e, n) {
				for (var r = [], i = 0; i < t.length; i++) r.push(t[i](e, n));
				return r
			}, {
				literal: !0,
				constant: e
			})
		},
		object: function() {
			var t = [],
				e = !0;
			if ("}" !== this.peekToken().text) do {
				if (this.peek("}")) break;
				var n = this.expect(),
					r = n.string || n.text;
				this.consume(":");
				var i = this.expression();
				t.push({
					key: r,
					value: i
				}), i.constant || (e = !1)
			} while (this.expect(","));
			return this.consume("}"), f(function(e, n) {
				for (var r = {}, i = 0; i < t.length; i++) {
					var o = t[i];
					r[o.key] = o.value(e, n)
				}
				return r
			}, {
				literal: !0,
				constant: e
			})
		}
	};
	var wi = {}, bi = {}, xi = r("$sce"),
		Si = {
			HTML: "html",
			CSS: "css",
			URL: "url",
			RESOURCE_URL: "resourceUrl",
			JS: "js"
		}, Ci = e.createElement("a"),
		ki = Vn(t.location.href, !0);
	Ln.$inject = ["$provide"], Bn.$inject = ["$locale"], zn.$inject = ["$locale"];
	var Ei = ".",
		Ai = {
			yyyy: Jn("FullYear", 4),
			yy: Jn("FullYear", 2, 0, !0),
			y: Jn("FullYear", 1),
			MMMM: Gn("Month"),
			MMM: Gn("Month", !0),
			MM: Jn("Month", 2, 1),
			M: Jn("Month", 1, 1),
			dd: Jn("Date", 2),
			d: Jn("Date", 1),
			HH: Jn("Hours", 2),
			H: Jn("Hours", 1),
			hh: Jn("Hours", 2, -12),
			h: Jn("Hours", 1, -12),
			mm: Jn("Minutes", 2),
			m: Jn("Minutes", 1),
			ss: Jn("Seconds", 2),
			s: Jn("Seconds", 1),
			sss: Jn("Milliseconds", 3),
			EEEE: Gn("Day"),
			EEE: Gn("Day", !0),
			a: Kn,
			Z: Xn
		}, Oi = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,
		Ti = /^\-?\d+$/;
	Yn.$inject = ["$locale"];
	var Mi = v(dr),
		Ni = v(gr);
	er.$inject = ["$parse"];
	var Pi = v({
		restrict: "E",
		compile: function(t, n) {
			return 8 >= wr && (n.href || n.name || n.$set("href", ""), t.append(e.createComment("IE fix"))), n.href || n.xlinkHref || n.name ? void 0 : function(t, e) {
				var n = "[object SVGAnimatedString]" === Ar.call(e.prop("href")) ? "xlink:href" : "href";
				e.on("click", function(t) {
					e.attr(n) || t.preventDefault()
				})
			}
		}
	}),
		ji = {};
	o(Gr, function(t, e) {
		if ("multiple" != t) {
			var n = Fe("ng-" + e);
			ji[n] = function() {
				return {
					priority: 100,
					link: function(t, r, i) {
						t.$watch(i[n], function(t) {
							i.$set(e, !! t)
						})
					}
				}
			}
		}
	}), o(["src", "srcset", "href"], function(t) {
		var e = Fe("ng-" + t);
		ji[e] = function() {
			return {
				priority: 99,
				link: function(n, r, i) {
					var o = t,
						a = t;
					"href" === t && "[object SVGAnimatedString]" === Ar.call(r.prop("href")) && (a = "xlinkHref", i.$attr[a] = "xlink:href", o = null), i.$observe(e, function(e) {
						return e ? (i.$set(a, e), void(wr && o && r.prop(o, i[a]))) : void("href" === t && i.$set(a, null))
					})
				}
			}
		}
	});
	var Di = {
		$addControl: $,
		$removeControl: $,
		$setValidity: $,
		$setDirty: $,
		$setPristine: $
	};
	rr.$inject = ["$element", "$attrs", "$scope", "$animate"];
	var Ri = function(t) {
		return ["$timeout", function(e) {
			var r = {
				name: "form",
				restrict: t ? "EAC" : "E",
				controller: rr,
				compile: function() {
					return {
						pre: function(t, r, i, o) {
							if (!i.action) {
								var a = function(t) {
									t.preventDefault ? t.preventDefault() : t.returnValue = !1
								};
								Ur(r[0], "submit", a), r.on("$destroy", function() {
									e(function() {
										Vr(r[0], "submit", a)
									}, 0, !1)
								})
							}
							var s = r.parent().controller("form"),
								u = i.name || i.ngForm;
							u && bn(t, u, o, u), s && r.on("$destroy", function() {
								s.$removeControl(o), u && bn(t, u, n, u), f(o, Di)
							})
						}
					}
				}
			};
			return r
		}]
	}, _i = Ri(),
		qi = Ri(!0),
		Ui = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,
		Vi = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,
		Ii = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,
		Fi = {
			text: sr,
			number: ur,
			url: cr,
			email: lr,
			radio: fr,
			checkbox: hr,
			hidden: $,
			button: $,
			submit: $,
			reset: $,
			file: $
		}, Li = ["badInput"],
		Hi = ["$browser", "$sniffer", function(t, e) {
			return {
				restrict: "E",
				require: "?ngModel",
				link: function(n, r, i, o) {
					o && (Fi[dr(i.type)] || Fi.text)(n, r, i, o, e, t)
				}
			}
		}],
		Bi = "ng-valid",
		zi = "ng-invalid",
		Wi = "ng-pristine",
		Qi = "ng-dirty",
		Ji = ["$scope", "$exceptionHandler", "$attrs", "$element", "$parse", "$animate", function(t, e, n, i, a, s) {
			function u(t, e) {
				e = e ? "-" + Z(e, "-") : "", s.removeClass(i, (t ? zi : Bi) + e), s.addClass(i, (t ? Bi : zi) + e)
			}
			this.$viewValue = Number.NaN, this.$modelValue = Number.NaN, this.$parsers = [], this.$formatters = [], this.$viewChangeListeners = [], this.$pristine = !0, this.$dirty = !1, this.$valid = !0, this.$invalid = !1, this.$name = n.name;
			var c = a(n.ngModel),
				l = c.assign;
			if (!l) throw r("ngModel")("nonassign", "Expression '{0}' is non-assignable. Element: {1}", n.ngModel, z(i));
			this.$render = $, this.$isEmpty = function(t) {
				return g(t) || "" === t || null === t || t !== t
			};
			var f = i.inheritedData("$formController") || Di,
				h = 0,
				p = this.$error = {};
			i.addClass(Wi), u(!0), this.$setValidity = function(t, e) {
				p[t] !== !e && (e ? (p[t] && h--, h || (u(!0), this.$valid = !0, this.$invalid = !1)) : (u(!1), this.$invalid = !0, this.$valid = !1, h++), p[t] = !e, u(e, t), f.$setValidity(t, e, this))
			}, this.$setPristine = function() {
				this.$dirty = !1, this.$pristine = !0, s.removeClass(i, Qi), s.addClass(i, Wi)
			}, this.$setViewValue = function(n) {
				this.$viewValue = n, this.$pristine && (this.$dirty = !0, this.$pristine = !1, s.removeClass(i, Wi), s.addClass(i, Qi), f.$setDirty()), o(this.$parsers, function(t) {
					n = t(n)
				}), this.$modelValue !== n && (this.$modelValue = n, l(t, n), o(this.$viewChangeListeners, function(t) {
					try {
						t()
					} catch (n) {
						e(n)
					}
				}))
			};
			var d = this;
			t.$watch(function() {
				var e = c(t);
				if (d.$modelValue !== e) {
					var n = d.$formatters,
						r = n.length;
					for (d.$modelValue = e; r--;) e = n[r](e);
					d.$viewValue !== e && (d.$viewValue = e, d.$render())
				}
				return e
			})
		}],
		Gi = function() {
			return {
				require: ["ngModel", "^?form"],
				controller: Ji,
				link: function(t, e, n, r) {
					var i = r[0],
						o = r[1] || Di;
					o.$addControl(i), t.$on("$destroy", function() {
						o.$removeControl(i)
					})
				}
			}
		}, Xi = v({
			require: "ngModel",
			link: function(t, e, n, r) {
				r.$viewChangeListeners.push(function() {
					t.$eval(n.ngChange)
				})
			}
		}),
		Ki = function() {
			return {
				require: "?ngModel",
				link: function(t, e, n, r) {
					if (r) {
						n.required = !0;
						var i = function(t) {
							return n.required && r.$isEmpty(t) ? void r.$setValidity("required", !1) : (r.$setValidity("required", !0), t)
						};
						r.$formatters.push(i), r.$parsers.unshift(i), n.$observe("required", function() {
							i(r.$viewValue)
						})
					}
				}
			}
		}, Yi = function() {
			return {
				require: "ngModel",
				link: function(t, e, r, i) {
					var a = /\/(.*)\//.exec(r.ngList),
						s = a && new RegExp(a[1]) || r.ngList || ",",
						u = function(t) {
							if (!g(t)) {
								var e = [];
								return t && o(t.split(s), function(t) {
									t && e.push(Pr(t))
								}), e
							}
						};
					i.$parsers.push(u), i.$formatters.push(function(t) {
						return Nr(t) ? t.join(", ") : n
					}), i.$isEmpty = function(t) {
						return !t || !t.length
					}
				}
			}
		}, Zi = /^(true|false|\d+)$/,
		to = function() {
			return {
				priority: 100,
				compile: function(t, e) {
					return Zi.test(e.ngValue) ? function(t, e, n) {
						n.$set("value", t.$eval(n.ngValue))
					} : function(t, e, n) {
						t.$watch(n.ngValue, function(t) {
							n.$set("value", t)
						})
					}
				}
			}
		}, eo = nr({
			compile: function(t) {
				return t.addClass("ng-binding"),
				function(t, e, r) {
					e.data("$binding", r.ngBind), t.$watch(r.ngBind, function(t) {
						e.text(t == n ? "" : t)
					})
				}
			}
		}),
		no = ["$interpolate", function(t) {
			return function(e, n, r) {
				var i = t(n.attr(r.$attr.ngBindTemplate));
				n.addClass("ng-binding").data("$binding", i), r.$observe("ngBindTemplate", function(t) {
					n.text(t)
				})
			}
		}],
		ro = ["$sce", "$parse", function(t, e) {
			return {
				compile: function(n) {
					return n.addClass("ng-binding"),
					function(n, r, i) {
						function o() {
							return (a(n) || "").toString()
						}
						r.data("$binding", i.ngBindHtml);
						var a = e(i.ngBindHtml);
						n.$watch(o, function() {
							r.html(t.getTrustedHtml(a(n)) || "")
						})
					}
				}
			}
		}],
		io = pr("", !0),
		oo = pr("Odd", 0),
		ao = pr("Even", 1),
		so = nr({
			compile: function(t, e) {
				e.$set("ngCloak", n), t.removeClass("ng-cloak")
			}
		}),
		uo = [function() {
			return {
				scope: !0,
				controller: "@",
				priority: 500
			}
		}],
		co = {}, lo = {
			blur: !0,
			focus: !0
		};
	o("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), function(t) {
		var e = Fe("ng-" + t);
		co[e] = ["$parse", "$rootScope", function(n, r) {
			return {
				compile: function(i, o) {
					var a = n(o[e], !0);
					return function(e, n) {
						n.on(t, function(n) {
							var i = function() {
								a(e, {
									$event: n
								})
							};
							lo[t] && r.$$phase ? e.$evalAsync(i) : e.$apply(i)
						})
					}
				}
			}
		}]
	});
	var fo = ["$animate", function(t) {
		return {
			transclude: "element",
			priority: 600,
			terminal: !0,
			restrict: "A",
			$$tlb: !0,
			link: function(n, r, i, o, a) {
				var s, u, c;
				n.$watch(i.ngIf, function(o) {
					B(o) ? u || (u = n.$new(), a(u, function(n) {
						n[n.length++] = e.createComment(" end ngIf: " + i.ngIf + " "), s = {
							clone: n
						}, t.enter(n, r.parent(), r)
					})) : (c && (c.remove(), c = null), u && (u.$destroy(), u = null), s && (c = oe(s.clone), t.leave(c, function() {
						c = null
					}), s = null))
				})
			}
		}
	}],
		ho = ["$http", "$templateCache", "$anchorScroll", "$animate", "$sce", function(t, e, n, r, i) {
			return {
				restrict: "ECA",
				priority: 400,
				terminal: !0,
				transclude: "element",
				controller: Tr.noop,
				compile: function(o, a) {
					var s = a.ngInclude || a.src,
						u = a.onload || "",
						c = a.autoscroll;
					return function(o, a, l, f, h) {
						var p, $, d, v = 0,
							g = function() {
								$ && ($.remove(), $ = null), p && (p.$destroy(), p = null), d && (r.leave(d, function() {
									$ = null
								}), $ = d, d = null)
							};
						o.$watch(i.parseAsResourceUrl(s), function(i) {
							var s = function() {
								!m(c) || c && !o.$eval(c) || n()
							}, l = ++v;
							i ? (t.get(i, {
								cache: e
							}).success(function(t) {
								if (l === v) {
									var e = o.$new();
									f.template = t;
									var n = h(e, function(t) {
										g(), r.enter(t, null, a, s)
									});
									p = e, d = n, p.$emit("$includeContentLoaded"), o.$eval(u)
								}
							}).error(function() {
								l === v && g()
							}), o.$emit("$includeContentRequested")) : (g(), f.template = null)
						})
					}
				}
			}
		}],
		po = ["$compile", function(t) {
			return {
				restrict: "ECA",
				priority: -400,
				require: "ngInclude",
				link: function(e, n, r, i) {
					n.html(i.template), t(n.contents())(e)
				}
			}
		}],
		$o = nr({
			priority: 450,
			compile: function() {
				return {
					pre: function(t, e, n) {
						t.$eval(n.ngInit)
					}
				}
			}
		}),
		vo = nr({
			terminal: !0,
			priority: 1e3
		}),
		go = ["$locale", "$interpolate", function(t, e) {
			var n = /{}/g;
			return {
				restrict: "EA",
				link: function(r, i, a) {
					var s = a.count,
						u = a.$attr.when && i.attr(a.$attr.when),
						c = a.offset || 0,
						l = r.$eval(u) || {}, f = {}, h = e.startSymbol(),
						p = e.endSymbol(),
						$ = /^when(Minus)?(.+)$/;
					o(a, function(t, e) {
						$.test(e) && (l[dr(e.replace("when", "").replace("Minus", "-"))] = i.attr(a.$attr[e]))
					}), o(l, function(t, r) {
						f[r] = e(t.replace(n, h + s + "-" + c + p))
					}), r.$watch(function() {
						var e = parseFloat(r.$eval(s));
						return isNaN(e) ? "" : (e in l || (e = t.pluralCat(e - c)), f[e](r, i, !0))
					}, function(t) {
						i.text(t)
					})
				}
			}
		}],
		mo = ["$parse", "$animate", function(t, n) {
			function a(t) {
				return t.clone[0]
			}
			function s(t) {
				return t.clone[t.clone.length - 1]
			}
			var u = "$$NG_REMOVED",
				c = r("ngRepeat");
			return {
				transclude: "element",
				priority: 1e3,
				terminal: !0,
				$$tlb: !0,
				link: function(r, l, f, h, p) {
					var $, d, v, g, m, y, w, b, x, S = f.ngRepeat,
						C = S.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),
						k = {
							$id: Me
						};
					if (!C) throw c("iexp", "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", S);
					if (y = C[1], w = C[2], $ = C[3], $ ? (d = t($), v = function(t, e, n) {
						return x && (k[x] = t), k[b] = e, k.$index = n, d(r, k)
					}) : (g = function(t, e) {
						return Me(e)
					}, m = function(t) {
						return t
					}), C = y.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/), !C) throw c("iidexp", "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.", y);
					b = C[3] || C[1], x = C[2];
					var E = {};
					r.$watchCollection(w, function(t) {
						var f, h, $, d, y, w, C, k, A, O, T, M, N = l[0],
							P = {}, j = [];
						if (i(t)) O = t, A = v || g;
						else {
							A = v || m, O = [];
							for (w in t) t.hasOwnProperty(w) && "$" != w.charAt(0) && O.push(w);
							O.sort()
						}
						for (d = O.length, h = j.length = O.length, f = 0; h > f; f++) if (w = t === O ? f : O[f], C = t[w], k = A(w, C, f), re(k, "`track by` id"), E.hasOwnProperty(k)) T = E[k], delete E[k], P[k] = T, j[f] = T;
						else {
							if (P.hasOwnProperty(k)) throw o(j, function(t) {
								t && t.scope && (E[t.id] = t)
							}), c("dupes", "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}", S, k, L(C));
							j[f] = {
								id: k
							}, P[k] = !1
						}
						for (w in E) E.hasOwnProperty(w) && (T = E[w], M = oe(T.clone), n.leave(M), o(M, function(t) {
							t[u] = !0
						}), T.scope.$destroy());
						for (f = 0, h = O.length; h > f; f++) {
							if (w = t === O ? f : O[f], C = t[w], T = j[f], j[f - 1] && (N = s(j[f - 1])), T.scope) {
								y = T.scope, $ = N;
								do $ = $.nextSibling;
								while ($ && $[u]);
								a(T) != $ && n.move(oe(T.clone), null, br(N)), N = s(T)
							} else y = r.$new();
							y[b] = C, x && (y[x] = w), y.$index = f, y.$first = 0 === f, y.$last = f === d - 1, y.$middle = !(y.$first || y.$last), y.$odd = !(y.$even = 0 === (1 & f)), T.scope || p(y, function(t) {
								t[t.length++] = e.createComment(" end ngRepeat: " + S + " "), n.enter(t, null, br(N)), N = t, T.scope = y, T.clone = t, P[T.id] = T
							})
						}
						E = P
					})
				}
			}
		}],
		yo = ["$animate", function(t) {
			return function(e, n, r) {
				e.$watch(r.ngShow, function(e) {
					t[B(e) ? "removeClass" : "addClass"](n, "ng-hide")
				})
			}
		}],
		wo = ["$animate", function(t) {
			return function(e, n, r) {
				e.$watch(r.ngHide, function(e) {
					t[B(e) ? "addClass" : "removeClass"](n, "ng-hide")
				})
			}
		}],
		bo = nr(function(t, e, n) {
			t.$watch(n.ngStyle, function(t, n) {
				n && t !== n && o(n, function(t, n) {
					e.css(n, "")
				}), t && e.css(t)
			}, !0)
		}),
		xo = ["$animate", function(t) {
			return {
				restrict: "EA",
				require: "ngSwitch",
				controller: ["$scope", function() {
					this.cases = {}
				}],
				link: function(e, n, r, i) {
					var a = r.ngSwitch || r.on,
						s = [],
						u = [],
						c = [],
						l = [];
					e.$watch(a, function(n) {
						var a, f;
						for (a = 0, f = c.length; f > a; ++a) c[a].remove();
						for (c.length = 0, a = 0, f = l.length; f > a; ++a) {
							var h = u[a];
							l[a].$destroy(), c[a] = h, t.leave(h, function() {
								c.splice(a, 1)
							})
						}
						u.length = 0, l.length = 0, (s = i.cases["!" + n] || i.cases["?"]) && (e.$eval(r.change), o(s, function(n) {
							var r = e.$new();
							l.push(r), n.transclude(r, function(e) {
								var r = n.element;
								u.push(e), t.enter(e, r.parent(), r)
							})
						}))
					})
				}
			}
		}],
		So = nr({
			transclude: "element",
			priority: 800,
			require: "^ngSwitch",
			link: function(t, e, n, r, i) {
				r.cases["!" + n.ngSwitchWhen] = r.cases["!" + n.ngSwitchWhen] || [], r.cases["!" + n.ngSwitchWhen].push({
					transclude: i,
					element: e
				})
			}
		}),
		Co = nr({
			transclude: "element",
			priority: 800,
			require: "^ngSwitch",
			link: function(t, e, n, r, i) {
				r.cases["?"] = r.cases["?"] || [], r.cases["?"].push({
					transclude: i,
					element: e
				})
			}
		}),
		ko = nr({
			link: function(t, e, n, i, o) {
				if (!o) throw r("ngTransclude")("orphan", "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}", z(e));
				o(function(t) {
					e.empty(), e.append(t)
				})
			}
		}),
		Eo = ["$templateCache", function(t) {
			return {
				restrict: "E",
				terminal: !0,
				compile: function(e, n) {
					if ("text/ng-template" == n.type) {
						var r = n.id,
							i = e[0].text;
						t.put(r, i)
					}
				}
			}
		}],
		Ao = r("ngOptions"),
		Oo = v({
			terminal: !0
		}),
		To = ["$compile", "$parse", function(t, r) {
			var i = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
				s = {
					$setViewValue: $
				};
			return {
				restrict: "E",
				require: ["select", "?ngModel"],
				controller: ["$element", "$scope", "$attrs", function(t, e, n) {
					var r, i, o = this,
						a = {}, u = s;
					o.databound = n.ngModel, o.init = function(t, e, n) {
						u = t, r = e, i = n
					}, o.addOption = function(e) {
						re(e, '"option value"'), a[e] = !0, u.$viewValue == e && (t.val(e), i.parent() && i.remove())
					}, o.removeOption = function(t) {
						this.hasOption(t) && (delete a[t], u.$viewValue == t && this.renderUnknownOption(t))
					}, o.renderUnknownOption = function(e) {
						var n = "? " + Me(e) + " ?";
						i.val(n), t.prepend(i), t.val(n), i.prop("selected", !0)
					}, o.hasOption = function(t) {
						return a.hasOwnProperty(t)
					}, e.$on("$destroy", function() {
						o.renderUnknownOption = $
					})
				}],
				link: function(s, u, c, l) {
					function f(t, e, n, r) {
						n.$render = function() {
							var t = n.$viewValue;
							r.hasOption(t) ? (C.parent() && C.remove(), e.val(t), "" === t && $.prop("selected", !0)) : g(t) && $ ? e.val("") : r.renderUnknownOption(t)
						}, e.on("change", function() {
							t.$apply(function() {
								C.parent() && C.remove(), n.$setViewValue(e.val())
							})
						})
					}
					function h(t, e, n) {
						var r;
						n.$render = function() {
							var t = new Ne(n.$viewValue);
							o(e.find("option"), function(e) {
								e.selected = m(t.get(e.value))
							})
						}, t.$watch(function() {
							q(r, n.$viewValue) || (r = _(n.$viewValue), n.$render())
						}), e.on("change", function() {
							t.$apply(function() {
								var t = [];
								o(e.find("option"), function(e) {
									e.selected && t.push(e.value)
								}), n.$setViewValue(t)
							})
						})
					}
					function p(e, o, s) {
						function u() {
							var t = !1;
							if (y) {
								var n = s.$modelValue;
								if (k && Nr(n)) {
									t = new Ne([]);
									for (var r = {}, i = 0; i < n.length; i++) r[h] = n[i], t.put(k(e, r), n[i])
								} else t = new Ne(n)
							}
							return t
						}
						function c() {
							var t, n, r, i, c, l, w, C, A, O, T, M, N, P, j, D = {
								"": []
							}, R = [""],
								_ = s.$modelValue,
								q = g(e) || [],
								U = p ? a(q) : q,
								V = {}, I = u();
							for (T = 0; A = U.length, A > T; T++) {
								if (w = T, p) {
									if (w = U[T], "$" === w.charAt(0)) continue;
									V[p] = w
								}
								if (V[h] = q[w], t = $(e, V) || "", (n = D[t]) || (n = D[t] = [], R.push(t)), y) M = m(I.remove(k ? k(e, V) : v(e, V)));
								else {
									if (k) {
										var F = {};
										F[h] = _, M = k(e, F) === k(e, V)
									} else M = _ === v(e, V);
									I = I || M
								}
								j = f(e, V), j = m(j) ? j : "", n.push({
									id: k ? k(e, V) : p ? U[T] : T,
									label: j,
									selected: M
								})
							}
							for (y || (b || null === _ ? D[""].unshift({
								id: "",
								label: "",
								selected: !I
							}) : I || D[""].unshift({
								id: "?",
								label: "",
								selected: !0
							})), O = 0, C = R.length; C > O; O++) {
								for (t = R[O], n = D[t], E.length <= O ? (i = {
									element: S.clone().attr("label", t),
									label: n.label
								}, c = [i], E.push(c), o.append(i.element)) : (c = E[O], i = c[0], i.label != t && i.element.attr("label", i.label = t)), N = null, T = 0, A = n.length; A > T; T++) r = n[T], (l = c[T + 1]) ? (N = l.element, l.label !== r.label && (N.text(l.label = r.label), N.prop("label", l.label)), l.id !== r.id && N.val(l.id = r.id), N[0].selected !== r.selected && (N.prop("selected", l.selected = r.selected), wr && N.prop("selected", l.selected))) : ("" === r.id && b ? P = b : (P = x.clone()).val(r.id).prop("selected", r.selected).attr("selected", r.selected).prop("label", r.label).text(r.label), c.push(l = {
									element: P,
									label: r.label,
									id: r.id,
									selected: r.selected
								}), d.addOption(r.label, P), N ? N.after(P) : i.element.append(P), N = P);
								for (T++; c.length > T;) r = c.pop(), d.removeOption(r.label), r.element.remove()
							}
							for (; E.length > O;) E.pop()[0].element.remove()
						}
						var l;
						if (!(l = w.match(i))) throw Ao("iexp", "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}", w, z(o));
						var f = r(l[2] || l[1]),
							h = l[4] || l[6],
							p = l[5],
							$ = r(l[3] || ""),
							v = r(l[2] ? l[1] : h),
							g = r(l[7]),
							C = l[8],
							k = C ? r(l[8]) : null,
							E = [
								[{
									element: o,
									label: ""
								}]
							];
						b && (t(b)(e), b.removeClass("ng-scope"), b.remove()), o.empty(), o.on("change", function() {
							e.$apply(function() {
								var t, r, i, a, u, l, f, $, d, m = g(e) || [],
									w = {};
								if (y) {
									for (i = [], l = 0, $ = E.length; $ > l; l++) for (t = E[l], u = 1, f = t.length; f > u; u++) if ((a = t[u].element)[0].selected) {
										if (r = a.val(), p && (w[p] = r), k) for (d = 0; d < m.length && (w[h] = m[d], k(e, w) != r); d++);
										else w[h] = m[r];
										i.push(v(e, w))
									}
								} else if (r = o.val(), "?" == r) i = n;
								else if ("" === r) i = null;
								else if (k) {
									for (d = 0; d < m.length; d++) if (w[h] = m[d], k(e, w) == r) {
										i = v(e, w);
										break
									}
								} else w[h] = m[r], p && (w[p] = r), i = v(e, w);
								s.$setViewValue(i), c()
							})
						}), s.$render = c, e.$watchCollection(g, c), e.$watchCollection(function() {
							var t = {}, n = g(e);
							if (n) {
								for (var r = new Array(n.length), i = 0, o = n.length; o > i; i++) t[h] = n[i], r[i] = f(e, t);
								return r
							}
						}, c), y && e.$watchCollection(function() {
							return s.$modelValue
						}, c)
					}
					if (l[1]) {
						for (var $, d = l[0], v = l[1], y = c.multiple, w = c.ngOptions, b = !1, x = br(e.createElement("option")), S = br(e.createElement("optgroup")), C = x.clone(), k = 0, E = u.children(), A = E.length; A > k; k++) if ("" === E[k].value) {
							$ = b = E.eq(k);
							break
						}
						d.init(v, b, C), y && (v.$isEmpty = function(t) {
							return !t || 0 === t.length
						}), w ? p(s, u, v) : y ? h(s, u, v) : f(s, u, v, d)
					}
				}
			}
		}],
		Mo = ["$interpolate", function(t) {
			var e = {
				addOption: $,
				removeOption: $
			};
			return {
				restrict: "E",
				priority: 100,
				compile: function(n, r) {
					if (g(r.value)) {
						var i = t(n.text(), !0);
						i || r.$set("value", n.text())
					}
					return function(t, n, r) {
						var o = "$selectController",
							a = n.parent(),
							s = a.data(o) || a.parent().data(o);
						s && s.databound ? n.prop("selected", !1) : s = e, i ? t.$watch(i, function(t, e) {
							r.$set("value", t), t !== e && s.removeOption(e), s.addOption(t)
						}) : s.addOption(r.value), n.on("$destroy", function() {
							s.removeOption(r.value)
						})
					}
				}
			}
		}],
		No = v({
			restrict: "E",
			terminal: !0
		});
	return t.angular.bootstrap ? void console.log("WARNING: Tried to load angular more than once.") : (te(), se(Tr), void br(e).ready(function() {
		K(e, Y)
	}))
}(window, document), !window.angular.$$csp() && window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}.ng-hide-add-active,.ng-hide-remove{display:block!important;}</style>');
! function(e, r) {
	"use strict";

	function t() {
		function e(e, t) {
			return r.extend(new(r.extend(function() {}, {
				prototype: e
			})), t)
		}
		function t(e, r) {
			var t = r.caseInsensitiveMatch,
				n = {
					originalPath: e,
					regexp: e
				}, a = n.keys = [];
			return e = e.replace(/([().])/g, "\\$1").replace(/(\/)?:(\w+)([\?\*])?/g, function(e, r, t, n) {
				var o = "?" === n ? n : null,
					i = "*" === n ? n : null;
				return a.push({
					name: t,
					optional: !! o
				}), r = r || "", "" + (o ? "" : r) + "(?:" + (o ? r : "") + (i && "(.+?)" || "([^/]+)") + (o || "") + ")" + (o || "")
			}).replace(/([\/$\*])/g, "\\$1"), n.regexp = new RegExp("^" + e + "$", t ? "i" : ""), n
		}
		var n = {};
		this.when = function(e, a) {
			if (n[e] = r.extend({
				reloadOnSearch: !0
			}, a, e && t(e, a)), e) {
				var o = "/" == e[e.length - 1] ? e.substr(0, e.length - 1) : e + "/";
				n[o] = r.extend({
					redirectTo: e
				}, t(o, a))
			}
			return this
		}, this.otherwise = function(e) {
			return this.when(null, e), this
		}, this.$get = ["$rootScope", "$location", "$routeParams", "$q", "$injector", "$http", "$templateCache", "$sce", function(t, a, o, i, c, l, u, s) {
			function p(e, r) {
				var t = r.keys,
					n = {};
				if (!r.regexp) return null;
				var a = r.regexp.exec(e);
				if (!a) return null;
				for (var o = 1, i = a.length; i > o; ++o) {
					var c = t[o - 1],
						l = a[o];
					c && l && (n[c.name] = l)
				}
				return n
			}
			function $() {
				var e = h(),
					n = m.current;
				e && n && e.$$route === n.$$route && r.equals(e.pathParams, n.pathParams) && !e.reloadOnSearch && !d ? (n.params = e.params, r.copy(n.params, o), t.$broadcast("$routeUpdate", n)) : (e || n) && (d = !1, t.$broadcast("$routeChangeStart", e, n), m.current = e, e && e.redirectTo && (r.isString(e.redirectTo) ? a.path(f(e.redirectTo, e.params)).search(e.params).replace() : a.url(e.redirectTo(e.pathParams, a.path(), a.search())).replace()), i.when(e).then(function() {
					if (e) {
						var t, n, a = r.extend({}, e.resolve);
						return r.forEach(a, function(e, t) {
							a[t] = r.isString(e) ? c.get(e) : c.invoke(e)
						}), r.isDefined(t = e.template) ? r.isFunction(t) && (t = t(e.params)) : r.isDefined(n = e.templateUrl) && (r.isFunction(n) && (n = n(e.params)), n = s.getTrustedResourceUrl(n), r.isDefined(n) && (e.loadedTemplateUrl = n, t = l.get(n, {
							cache: u
						}).then(function(e) {
							return e.data
						}))), r.isDefined(t) && (a.$template = t), i.all(a)
					}
				}).then(function(a) {
					e == m.current && (e && (e.locals = a, r.copy(e.params, o)), t.$broadcast("$routeChangeSuccess", e, n))
				}, function(r) {
					e == m.current && t.$broadcast("$routeChangeError", e, n, r)
				}))
			}
			function h() {
				var t, o;
				return r.forEach(n, function(n) {
					!o && (t = p(a.path(), n)) && (o = e(n, {
						params: r.extend({}, a.search(), t),
						pathParams: t
					}), o.$$route = n)
				}), o || n[null] && e(n[null], {
					params: {},
					pathParams: {}
				})
			}
			function f(e, t) {
				var n = [];
				return r.forEach((e || "").split(":"), function(e, r) {
					if (0 === r) n.push(e);
					else {
						var a = e.match(/(\w+)(.*)/),
							o = a[1];
						n.push(t[o]), n.push(a[2] || ""), delete t[o]
					}
				}), n.join("")
			}
			var d = !1,
				m = {
					routes: n,
					reload: function() {
						d = !0, t.$evalAsync($)
					}
				};
			return t.$on("$locationChangeSuccess", $), m
		}]
	}
	function n() {
		this.$get = function() {
			return {}
		}
	}
	function a(e, t, n) {
		return {
			restrict: "ECA",
			terminal: !0,
			priority: 400,
			transclude: "element",
			link: function(a, o, i, c, l) {
				function u() {
					h && (h.remove(), h = null), p && (p.$destroy(), p = null), $ && (n.leave($, function() {
						h = null
					}), h = $, $ = null)
				}
				function s() {
					var i = e.current && e.current.locals,
						c = i && i.$template;
					if (r.isDefined(c)) {
						var s = a.$new(),
							h = e.current,
							m = l(s, function(e) {
								n.enter(e, null, $ || o, function() {
									!r.isDefined(f) || f && !a.$eval(f) || t()
								}), u()
							});
						$ = m, p = h.scope = s, p.$emit("$viewContentLoaded"), p.$eval(d)
					} else u()
				}
				var p, $, h, f = i.autoscroll,
					d = i.onload || "";
				a.$on("$routeChangeSuccess", s), s()
			}
		}
	}
	function o(e, r, t) {
		return {
			restrict: "ECA",
			priority: -400,
			link: function(n, a) {
				var o = t.current,
					i = o.locals;
				a.html(i.$template);
				var c = e(a.contents());
				if (o.controller) {
					i.$scope = n;
					var l = r(o.controller, i);
					o.controllerAs && (n[o.controllerAs] = l), a.data("$ngControllerController", l), a.children().data("$ngControllerController", l)
				}
				c(n)
			}
		}
	}
	var i = r.module("ngRoute", ["ng"]).provider("$route", t);
	i.provider("$routeParams", n), i.directive("ngView", a), i.directive("ngView", o), a.$inject = ["$route", "$anchorScroll", "$animate"], o.$inject = ["$compile", "$controller", "$route"]
}(window, window.angular);
! function(o, n, e) {
	"use strict";
	n.module("ngCookies", ["ng"]).factory("$cookies", ["$rootScope", "$browser", function(o, i) {
		function r() {
			var o, r, t, u;
			for (o in f) a(c[o]) && i.cookies(o, e);
			for (o in c) r = c[o], n.isString(r) || (r = "" + r, c[o] = r), r !== f[o] && (i.cookies(o, r), u = !0);
			if (u) {
				u = !1, t = i.cookies();
				for (o in c) c[o] !== t[o] && (a(t[o]) ? delete c[o] : c[o] = t[o], u = !0)
			}
		}
		var t, c = {}, f = {}, u = !1,
			s = n.copy,
			a = n.isUndefined;
		return i.addPollFn(function() {
			var n = i.cookies();
			t != n && (t = n, s(n, f), s(n, c), u && o.$apply())
		})(), u = !0, o.$watch(r), c
	}]).factory("$cookieStore", ["$cookies", function(o) {
		return {
			get: function(e) {
				var i = o[e];
				return i ? n.fromJson(i) : i
			},
			put: function(e, i) {
				o[e] = n.toJson(i)
			},
			remove: function(n) {
				delete o[n]
			}
		}
	}])
}(window, window.angular);
! function(n, t, a) {
	"use strict";
	t.module("ngAnimate", ["ng"]).directive("ngAnimateChildren", function() {
		var n = "$$ngAnimateChildren";
		return function(a, e, i) {
			var r = i.ngAnimateChildren;
			t.isString(r) && 0 === r.length ? e.data(n, !0) : a.$watch(r, function(t) {
				e.data(n, !! t)
			})
		}
	}).factory("$$animateReflow", ["$$rAF", "$document", function(n, t) {
		var a = t[0].body;
		return function(t) {
			return n(function() {
				a.offsetWidth + 1;
				t()
			})
		}
	}]).config(["$provide", "$animateProvider", function(e, i) {
		function r(n) {
			for (var t = 0; t < n.length; t++) {
				var a = n[t];
				if (a.nodeType == v) return a
			}
		}
		function o(n) {
			return n && t.element(n)
		}
		function s(n) {
			return t.element(r(n))
		}
		function u(n, t) {
			return r(n) == r(t)
		}
		var l = t.noop,
			f = t.forEach,
			c = i.$$selectors,
			v = 1,
			d = "$$ngAnimateState",
			m = "$$ngAnimateChildren",
			g = "ng-animate",
			C = {
				running: !0
			};
		e.decorator("$animate", ["$delegate", "$injector", "$sniffer", "$rootElement", "$$asyncCallback", "$rootScope", "$document", function(n, a, e, v, p, y) {
			function h(n) {
				var t = n.data(d) || {};
				t.running = !0, n.data(d, t)
			}
			function $(n) {
				if (n) {
					var t = [],
						i = {}, r = n.substr(1).split(".");
					(e.transitions || e.animations) && t.push(a.get(c[""]));
					for (var o = 0; o < r.length; o++) {
						var s = r[o],
							u = c[s];
						u && !i[s] && (t.push(a.get(u)), i[s] = !0)
					}
					return t
				}
			}
			function D(n, a, e) {
				function i(n, t) {
					var a = n[t],
						e = n["before" + t.charAt(0).toUpperCase() + t.substr(1)];
					return a || e ? ("leave" == t && (e = a, a = null), D.push({
						event: t,
						fn: a
					}), p.push({
						event: t,
						fn: e
					}), !0) : void 0
				}
				function r(t, a, i) {
					function r(n) {
						if (a) {
							if ((a[n] || l)(), ++c < o.length) return;
							a = null
						}
						i()
					}
					var o = [];
					f(t, function(n) {
						n.fn && o.push(n)
					});
					var c = 0;
					f(o, function(t, i) {
						var o = function() {
							r(i)
						};
						switch (t.event) {
							case "setClass":
								a.push(t.fn(n, s, u, o));
								break;
							case "addClass":
								a.push(t.fn(n, s || e, o));
								break;
							case "removeClass":
								a.push(t.fn(n, u || e, o));
								break;
							default:
								a.push(t.fn(n, o))
						}
					}), a && 0 === a.length && i()
				}
				var o = n[0];
				if (o) {
					var s, u, c = "setClass" == a,
						v = c || "addClass" == a || "removeClass" == a;
					t.isArray(e) && (s = e[0], u = e[1], e = s + " " + u);
					var d = n.attr("class"),
						m = d + " " + e;
					if (B(m)) {
						var g = l,
							C = [],
							p = [],
							y = l,
							h = [],
							D = [],
							b = (" " + m).replace(/\s+/g, ".");
						return f($(b), function(n) {
							var t = i(n, a);
							!t && c && (i(n, "addClass"), i(n, "removeClass"))
						}), {
							node: o,
							event: a,
							className: e,
							isClassBased: v,
							isSetClassOperation: c,
							before: function(n) {
								g = n, r(p, C, function() {
									g = l, n()
								})
							},
							after: function(n) {
								y = n, r(D, h, function() {
									y = l, n()
								})
							},
							cancel: function() {
								C && (f(C, function(n) {
									(n || l)(!0)
								}), g(!0)), h && (f(h, function(n) {
									(n || l)(!0)
								}), y(!0))
							}
						}
					}
				}
			}
			function b(n, a, e, i, r, o, s) {
				function u(t) {
					var i = "$animate:" + t;
					h && h[i] && h[i].length > 0 && p(function() {
						e.triggerHandler(i, {
							event: n,
							className: a
						})
					})
				}
				function l() {
					u("before")
				}
				function c() {
					u("after")
				}
				function v() {
					u("close"), s && p(function() {
						s()
					})
				}
				function m() {
					m.hasBeenRun || (m.hasBeenRun = !0, o())
				}
				function C() {
					if (!C.hasBeenRun) {
						C.hasBeenRun = !0;
						var t = e.data(d);
						t && (y && y.isClassBased ? w(e, a) : (p(function() {
							var t = e.data(d) || {};
							N == t.index && w(e, a, n)
						}), e.data(d, t))), v()
					}
				}
				var y = D(e, n, a);
				if (!y) return m(), l(), c(), void C();
				a = y.className;
				var h = t.element._data(y.node);
				h = h && h.events, i || (i = r ? r.parent() : e.parent());
				var $, b = e.data(d) || {}, A = b.active || {}, x = b.totalActive || 0,
					B = b.last;
				if (y.isClassBased && ($ = b.running || b.disabled || B && !B.isClassBased), $ || S(e, i)) return m(), l(), c(), void C();
				var F = !1;
				if (x > 0) {
					var M = [];
					if (y.isClassBased) {
						if ("setClass" == B.event) M.push(B), w(e, a);
						else if (A[a]) {
							var E = A[a];
							E.event == n ? F = !0 : (M.push(E), w(e, a))
						}
					} else if ("leave" == n && A["ng-leave"]) F = !0;
					else {
						for (var R in A) M.push(A[R]), w(e, R);
						A = {}, x = 0
					}
					M.length > 0 && f(M, function(n) {
						n.cancel()
					})
				}
				if (!y.isClassBased || y.isSetClassOperation || F || (F = "addClass" == n == e.hasClass(a)), F) return m(), l(), c(), void v();
				"leave" == n && e.one("$destroy", function() {
					var n = t.element(this),
						a = n.data(d);
					if (a) {
						var e = a.active["ng-leave"];
						e && (e.cancel(), w(n, "ng-leave"))
					}
				}), e.addClass(g);
				var N = k++;
				x++, A[a] = y, e.data(d, {
					last: y,
					active: A,
					index: N,
					totalActive: x
				}), l(), y.before(function(t) {
					var i = e.data(d);
					t = t || !i || !i.active[a] || y.isClassBased && i.active[a].event != n, m(), t === !0 ? C() : (c(), y.after(C))
				})
			}
			function A(n) {
				var a = r(n);
				if (a) {
					var e = t.isFunction(a.getElementsByClassName) ? a.getElementsByClassName(g) : a.querySelectorAll("." + g);
					f(e, function(n) {
						n = t.element(n);
						var a = n.data(d);
						a && a.active && f(a.active, function(n) {
							n.cancel()
						})
					})
				}
			}
			function w(n, t) {
				if (u(n, v)) C.disabled || (C.running = !1, C.structural = !1);
				else if (t) {
					var a = n.data(d) || {}, e = t === !0;
					!e && a.active && a.active[t] && (a.totalActive--, delete a.active[t]), (e || !a.totalActive) && (n.removeClass(g), n.removeData(d))
				}
			}
			function S(n, a) {
				if (C.disabled) return !0;
				if (u(n, v)) return C.running;
				var e, i, r;
				do {
					if (0 === a.length) break;
					var o = u(a, v),
						s = o ? C : a.data(d) || {};
					if (s.disabled) return !0;
					if (o && (r = !0), e !== !1) {
						var l = a.data(m);
						t.isDefined(l) && (e = l)
					}
					i = i || s.running || s.last && !s.last.isClassBased
				} while (a = a.parent());
				return !r || !e && i
			}
			var k = 0;
			v.data(d, C), y.$$postDigest(function() {
				y.$$postDigest(function() {
					C.running = !1
				})
			});
			var x = i.classNameFilter(),
				B = x ? function(n) {
					return x.test(n)
				} : function() {
					return !0
				};
			return {
				enter: function(a, e, i, r) {
					a = t.element(a), e = o(e), i = o(i), h(a), n.enter(a, e, i), y.$$postDigest(function() {
						a = s(a), b("enter", "ng-enter", a, e, i, l, r)
					})
				},
				leave: function(a, e) {
					a = t.element(a), A(a), h(a), y.$$postDigest(function() {
						b("leave", "ng-leave", s(a), null, null, function() {
							n.leave(a)
						}, e)
					})
				},
				move: function(a, e, i, r) {
					a = t.element(a), e = o(e), i = o(i), A(a), h(a), n.move(a, e, i), y.$$postDigest(function() {
						a = s(a), b("move", "ng-move", a, e, i, l, r)
					})
				},
				addClass: function(a, e, i) {
					a = t.element(a), a = s(a), b("addClass", e, a, null, null, function() {
						n.addClass(a, e)
					}, i)
				},
				removeClass: function(a, e, i) {
					a = t.element(a), a = s(a), b("removeClass", e, a, null, null, function() {
						n.removeClass(a, e)
					}, i)
				},
				setClass: function(a, e, i, r) {
					a = t.element(a), a = s(a), b("setClass", [e, i], a, null, null, function() {
						n.setClass(a, e, i)
					}, r)
				},
				enabled: function(n, t) {
					switch (arguments.length) {
						case 2:
							if (n) w(t);
							else {
								var a = t.data(d) || {};
								a.disabled = !0, t.data(d, a)
							}
							break;
						case 1:
							C.disabled = !n;
							break;
						default:
							n = !C.disabled
					}
					return !!n
				}
			}
		}]), i.register("", ["$window", "$sniffer", "$timeout", "$$animateReflow", function(e, i, o, s) {
			function u() {
				I || (I = s(function() {
					Q = [], I = null, J = {}
				}))
			}
			function c(n, t) {
				I && I(), Q.push(t), I = s(function() {
					f(Q, function(n) {
						n()
					}), Q = [], I = null, J = {}
				})
			}
			function d(n, a) {
				var e = r(n);
				n = t.element(e), Y.push(n);
				var i = Date.now() + a;
				X >= i || (o.cancel(V), X = i, V = o(function() {
					m(Y), Y = []
				}, a, !1))
			}
			function m(n) {
				f(n, function(n) {
					var t = n.data(K);
					t && (t.closeAnimationFn || l)()
				})
			}
			function g(n, t) {
				var a = t ? J[t] : null;
				if (!a) {
					var i, r, o, s, u = 0,
						l = 0,
						c = 0,
						d = 0;
					f(n, function(n) {
						if (n.nodeType == v) {
							var t = e.getComputedStyle(n) || {};
							o = t[E + O], u = Math.max(C(o), u), s = t[E + W], i = t[E + j], l = Math.max(C(i), l), r = t[N + j], d = Math.max(C(r), d);
							var a = C(t[N + O]);
							a > 0 && (a *= parseInt(t[N + q], 10) || 1), c = Math.max(a, c)
						}
					}), a = {
						total: 0,
						transitionPropertyStyle: s,
						transitionDurationStyle: o,
						transitionDelayStyle: i,
						transitionDelay: l,
						transitionDuration: u,
						animationDelayStyle: r,
						animationDelay: d,
						animationDuration: c
					}, t && (J[t] = a)
				}
				return a
			}
			function C(n) {
				var a = 0,
					e = t.isString(n) ? n.split(/\s*,\s*/) : [];
				return f(e, function(n) {
					a = Math.max(parseFloat(n) || 0, a)
				}), a
			}
			function p(n) {
				var t = n.parent(),
					a = t.data(H);
				return a || (t.data(H, ++L), a = L), a + "-" + r(n).getAttribute("class")
			}
			function y(n, t, a, e) {
				var i = p(t),
					r = i + " " + a,
					o = J[r] ? ++J[r].total : 0,
					s = {};
				if (o > 0) {
					var u = a + "-stagger",
						f = i + " " + u,
						c = !J[f];
					c && t.addClass(u), s = g(t, f), c && t.removeClass(u)
				}
				e = e || function(n) {
					return n()
				}, t.addClass(a);
				var v = t.data(K) || {}, d = e(function() {
					return g(t, r)
				}),
					m = d.transitionDuration,
					C = d.animationDuration;
				if (0 === m && 0 === C) return t.removeClass(a), !1;
				t.data(K, {
					running: v.running || 0,
					itemIndex: o,
					stagger: s,
					timings: d,
					closeAnimationFn: l
				});
				var y = v.running > 0 || "setClass" == n;
				return m > 0 && $(t, a, y), C > 0 && s.animationDelay > 0 && 0 === s.animationDuration && D(t), !0
			}
			function h(n) {
				return "ng-enter" == n || "ng-move" == n || "ng-leave" == n
			}
			function $(n, t, a) {
				h(t) || !a ? r(n).style[E + W] = "none" : n.addClass(U)
			}
			function D(n) {
				r(n).style[N] = "none 0s"
			}
			function b(n) {
				var t = E + W,
					a = r(n);
				a.style[t] && a.style[t].length > 0 && (a.style[t] = ""), n.removeClass(U)
			}
			function A(n) {
				var t = N,
					a = r(n);
				a.style[t] && a.style[t].length > 0 && (a.style[t] = "")
			}
			function w(n, t, a, e) {
				function i() {
					t.off(h, o), t.removeClass(l), F(t, a);
					var n = r(t);
					for (var e in D) n.style.removeProperty(D[e])
				}
				function o(n) {
					n.stopPropagation();
					var t = n.originalEvent || n,
						a = t.$manualTimeStamp || t.timeStamp || Date.now(),
						i = parseFloat(t.elapsedTime.toFixed(_));
					Math.max(a - y, 0) >= p && i >= g && e()
				}
				var s = r(t),
					u = t.data(K);
				if (-1 == s.getAttribute("class").indexOf(a) || !u) return void e();
				var l = "";
				f(a.split(" "), function(n, t) {
					l += (t > 0 ? " " : "") + n + "-active"
				});
				var c = u.stagger,
					v = u.timings,
					m = u.itemIndex,
					g = Math.max(v.transitionDuration, v.animationDuration),
					C = Math.max(v.transitionDelay, v.animationDelay),
					p = C * G,
					y = Date.now(),
					h = P + " " + R,
					$ = "",
					D = [];
				if (v.transitionDuration > 0) {
					var b = v.transitionPropertyStyle; - 1 == b.indexOf("all") && ($ += T + "transition-property: " + b + ";", $ += T + "transition-duration: " + v.transitionDurationStyle + ";", D.push(T + "transition-property"), D.push(T + "transition-duration"))
				}
				if (m > 0) {
					if (c.transitionDelay > 0 && 0 === c.transitionDuration) {
						var A = v.transitionDelayStyle;
						$ += T + "transition-delay: " + S(A, c.transitionDelay, m) + "; ", D.push(T + "transition-delay")
					}
					c.animationDelay > 0 && 0 === c.animationDuration && ($ += T + "animation-delay: " + S(v.animationDelayStyle, c.animationDelay, m) + "; ", D.push(T + "animation-delay"))
				}
				if (D.length > 0) {
					var w = s.getAttribute("style") || "";
					s.setAttribute("style", w + "; " + $)
				}
				t.on(h, o), t.addClass(l), u.closeAnimationFn = function() {
					i(), e()
				};
				var k = m * (Math.max(c.animationDelay, c.transitionDelay) || 0),
					x = (C + g) * z,
					B = (k + x) * G;
				return u.running++, d(t, B), i
			}
			function S(n, t, a) {
				var e = "";
				return f(n.split(","), function(n, i) {
					e += (i > 0 ? "," : "") + (a * t + parseInt(n, 10)) + "s"
				}), e
			}
			function k(n, t, a, e) {
				return y(n, t, a, e) ? function(n) {
					n && F(t, a)
				} : void 0
			}
			function x(n, t, a, e) {
				return t.data(K) ? w(n, t, a, e) : (F(t, a), void e())
			}
			function B(n, t, a, e) {
				var i = k(n, t, a);
				if (!i) return u(), void e();
				var r = i;
				return c(t, function() {
					b(t, a), A(t), r = x(n, t, a, e)
				}),
				function(n) {
					(r || l)(n)
				}
			}
			function F(n, t) {
				n.removeClass(t);
				var a = n.data(K);
				a && (a.running && a.running--, a.running && 0 !== a.running || n.removeData(K))
			}
			function M(n, a) {
				var e = "";
				return n = t.isArray(n) ? n : n.split(/\s+/), f(n, function(n, t) {
					n && n.length > 0 && (e += (t > 0 ? " " : "") + n + a)
				}), e
			}
			var E, R, N, P, T = "";
			n.ontransitionend === a && n.onwebkittransitionend !== a ? (T = "-webkit-", E = "WebkitTransition", R = "webkitTransitionEnd transitionend") : (E = "transition", R = "transitionend"), n.onanimationend === a && n.onwebkitanimationend !== a ? (T = "-webkit-", N = "WebkitAnimation", P = "webkitAnimationEnd animationend") : (N = "animation", P = "animationend");
			var I, O = "Duration",
				W = "Property",
				j = "Delay",
				q = "IterationCount",
				H = "$$ngAnimateKey",
				K = "$$ngAnimateCSS3Data",
				U = "ng-animate-block-transitions",
				_ = 3,
				z = 1.5,
				G = 1e3,
				J = {}, L = 0,
				Q = [],
				V = null,
				X = 0,
				Y = [];
			return {
				enter: function(n, t) {
					return B("enter", n, "ng-enter", t)
				},
				leave: function(n, t) {
					return B("leave", n, "ng-leave", t)
				},
				move: function(n, t) {
					return B("move", n, "ng-move", t)
				},
				beforeSetClass: function(n, t, a, e) {
					var i = M(a, "-remove") + " " + M(t, "-add"),
						r = k("setClass", n, i, function(e) {
							var i = n.attr("class");
							n.removeClass(a), n.addClass(t);
							var r = e();
							return n.attr("class", i), r
						});
					return r ? (c(n, function() {
						b(n, i), A(n), e()
					}), r) : (u(), void e())
				},
				beforeAddClass: function(n, t, a) {
					var e = k("addClass", n, M(t, "-add"), function(a) {
						n.addClass(t);
						var e = a();
						return n.removeClass(t), e
					});
					return e ? (c(n, function() {
						b(n, t), A(n), a()
					}), e) : (u(), void a())
				},
				setClass: function(n, t, a, e) {
					a = M(a, "-remove"), t = M(t, "-add");
					var i = a + " " + t;
					return x("setClass", n, i, e)
				},
				addClass: function(n, t, a) {
					return x("addClass", n, M(t, "-add"), a)
				},
				beforeRemoveClass: function(n, t, a) {
					var e = k("removeClass", n, M(t, "-remove"), function(a) {
						var e = n.attr("class");
						n.removeClass(t);
						var i = a();
						return n.attr("class", e), i
					});
					return e ? (c(n, function() {
						b(n, t), A(n), a()
					}), e) : void a()
				},
				removeClass: function(n, t, a) {
					return x("removeClass", n, M(t, "-remove"), a)
				}
			}
		}])
	}])
}(window, window.angular);
"undefined" != typeof module && "undefined" != typeof exports && module.exports === exports && (module.exports = "ui.router"),
function(e, t, r) {
	"use strict";

	function n(e, t) {
		return D(new(D(function() {}, {
			prototype: e
		})), t)
	}
	function i(e) {
		return R(arguments, function(t) {
			t !== e && R(t, function(t, r) {
				e.hasOwnProperty(r) || (e[r] = t)
			})
		}), e
	}
	function a(e, t) {
		var r = [];
		for (var n in e.path) {
			if (e.path[n] !== t.path[n]) break;
			r.push(e.path[n])
		}
		return r
	}
	function o(e) {
		if (Object.keys) return Object.keys(e);
		var r = [];
		return t.forEach(e, function(e, t) {
			r.push(t)
		}), r
	}
	function u(e, t) {
		if (Array.prototype.indexOf) return e.indexOf(t, Number(arguments[2]) || 0);
		var r = e.length >>> 0,
			n = Number(arguments[2]) || 0;
		for (n = 0 > n ? Math.ceil(n) : Math.floor(n), 0 > n && (n += r); r > n; n++) if (n in e && e[n] === t) return n;
		return -1
	}
	function s(e, t, r, n) {
		var i, s = a(r, n),
			l = {}, c = [];
		for (var f in s) if (s[f].params && (i = o(s[f].params), i.length)) for (var p in i) u(c, i[p]) >= 0 || (c.push(i[p]), l[i[p]] = e[i[p]]);
		return D({}, l, t)
	}
	function l(e, t, r) {
		if (!r) {
			r = [];
			for (var n in e) r.push(n)
		}
		for (var i = 0; i < r.length; i++) {
			var a = r[i];
			if (e[a] != t[a]) return !1
		}
		return !0
	}
	function c(e, t) {
		var r = {};
		return R(e, function(e) {
			r[e] = t[e]
		}), r
	}
	function f(e) {
		var t = {}, r = Array.prototype.concat.apply(Array.prototype, Array.prototype.slice.call(arguments, 1));
		for (var n in e) - 1 == u(r, n) && (t[n] = e[n]);
		return t
	}
	function p(e, t) {
		var r = N(e),
			n = r ? [] : {};
		return R(e, function(e, i) {
			t(e, i) && (n[r ? n.length : i] = e)
		}), n
	}
	function h(e, t) {
		var r = N(e) ? [] : {};
		return R(e, function(e, n) {
			r[n] = t(e, n)
		}), r
	}
	function v(e, t) {
		var n = 1,
			a = 2,
			s = {}, l = [],
			c = s,
			p = D(e.when(s), {
				$$promises: s,
				$$values: s
			});
		this.study = function(s) {
			function h(e, r) {
				if (g[r] !== a) {
					if (m.push(r), g[r] === n) throw m.splice(0, u(m, r)), new Error("Cyclic dependency: " + m.join(" -> "));
					if (g[r] = n, M(e)) d.push(r, [function() {
						return t.get(e)
					}], l);
					else {
						var i = t.annotate(e);
						R(i, function(e) {
							e !== r && s.hasOwnProperty(e) && h(s[e], e)
						}), d.push(r, e, i)
					}
					m.pop(), g[r] = a
				}
			}
			function v(e) {
				return F(e) && e.then && e.$$promises
			}
			if (!F(s)) throw new Error("'invocables' must be an object");
			var $ = o(s || {}),
				d = [],
				m = [],
				g = {};
			return R(s, h), s = m = g = null,
			function(n, a, o) {
				function u() {
					--y || (b || i(w, a.$$values), m.$$values = w, m.$$promises = m.$$promises || !0, delete m.$$inheritedValues, h.resolve(w))
				}
				function s(e) {
					m.$$failure = e, h.reject(e)
				}
				function l(r, i, a) {
					function l(e) {
						f.reject(e), s(e)
					}
					function c() {
						if (!I(m.$$failure)) try {
							f.resolve(t.invoke(i, o, w)), f.promise.then(function(e) {
								w[r] = e, u()
							}, l)
						} catch (e) {
							l(e)
						}
					}
					var f = e.defer(),
						p = 0;
					R(a, function(e) {
						g.hasOwnProperty(e) && !n.hasOwnProperty(e) && (p++, g[e].then(function(t) {
							w[e] = t, --p || c()
						}, l))
					}), p || c(), g[r] = f.promise
				}
				if (v(n) && o === r && (o = a, a = n, n = null), n) {
					if (!F(n)) throw new Error("'locals' must be an object")
				} else n = c;
				if (a) {
					if (!v(a)) throw new Error("'parent' must be a promise returned by $resolve.resolve()")
				} else a = p;
				var h = e.defer(),
					m = h.promise,
					g = m.$$promises = {}, w = D({}, n),
					y = 1 + d.length / 3,
					b = !1;
				if (I(a.$$failure)) return s(a.$$failure), m;
				a.$$inheritedValues && i(w, f(a.$$inheritedValues, $)), D(g, a.$$promises), a.$$values ? (b = i(w, f(a.$$values, $)), m.$$inheritedValues = f(a.$$values, $), u()) : (a.$$inheritedValues && (m.$$inheritedValues = f(a.$$inheritedValues, $)), a.then(u, s));
				for (var E = 0, S = d.length; S > E; E += 3) n.hasOwnProperty(d[E]) ? u() : l(d[E], d[E + 1], d[E + 2]);
				return m
			}
		}, this.resolve = function(e, t, r, n) {
			return this.study(e)(t, r, n)
		}
	}
	function $(e, t, r) {
		this.fromConfig = function(e, t, r) {
			return I(e.template) ? this.fromString(e.template, t) : I(e.templateUrl) ? this.fromUrl(e.templateUrl, t) : I(e.templateProvider) ? this.fromProvider(e.templateProvider, t, r) : null
		}, this.fromString = function(e, t) {
			return V(e) ? e(t) : e
		}, this.fromUrl = function(r, n) {
			return V(r) && (r = r(n)), null == r ? null : e.get(r, {
				cache: t,
				headers: {
					Accept: "text/html"
				}
			}).then(function(e) {
				return e.data
			})
		}, this.fromProvider = function(e, t, n) {
			return r.invoke(e, null, n || {
				params: t
			})
		}
	}
	function d(e, t, i) {
		function a(t, r, n, i) {
			if (d.push(t), v[t]) return v[t];
			if (!/^\w+(-+\w+)*(?:\[\])?$/.test(t)) throw new Error("Invalid parameter name '" + t + "' in pattern '" + e + "'");
			if ($[t]) throw new Error("Duplicate parameter name '" + t + "' in pattern '" + e + "'");
			return $[t] = new T.Param(t, r, n, i), $[t]
		}
		function o(e, t, r) {
			var n = ["", ""],
				i = e.replace(/[\\\[\]\^$*+?.()|{}]/g, "\\$&");
			if (!t) return i;
			switch (r) {
				case !1:
					n = ["(", ")"];
					break;
				case !0:
					n = ["?(", ")?"];
					break;
				default:
					n = ["(" + r + "|", ")?"]
			}
			return i + n[0] + t + n[1]
		}
		function u(r, i) {
			var a, o, u, s, l;
			return a = r[2] || r[3], l = t.params[a], u = e.substring(p, r.index), o = i ? r[4] : r[4] || ("*" == r[1] ? ".*" : null), s = T.type(o || "string") || n(T.type("string"), {
				pattern: new RegExp(o)
			}), {
				id: a,
				regexp: o,
				segment: u,
				type: s,
				cfg: l
			}
		}
		t = D({
			params: {}
		}, F(t) ? t : {});
		var s, l = /([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,
			c = /([:]?)([\w\[\]-]+)|\{([\w\[\]-]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,
			f = "^",
			p = 0,
			h = this.segments = [],
			v = i ? i.params : {}, $ = this.params = i ? i.params.$$new() : new T.ParamSet,
			d = [];
		this.source = e;
		for (var m, g, w;
		(s = l.exec(e)) && (m = u(s, !1), !(m.segment.indexOf("?") >= 0));) g = a(m.id, m.type, m.cfg, "path"), f += o(m.segment, g.type.pattern.source, g.squash), h.push(m.segment), p = l.lastIndex;
		w = e.substring(p);
		var y = w.indexOf("?");
		if (y >= 0) {
			var b = this.sourceSearch = w.substring(y);
			if (w = w.substring(0, y), this.sourcePath = e.substring(0, p + y), b.length > 0) for (p = 0; s = c.exec(b);) m = u(s, !0), g = a(m.id, m.type, m.cfg, "search"), p = l.lastIndex
		} else this.sourcePath = e, this.sourceSearch = "";
		f += o(w) + (t.strict === !1 ? "/?" : "") + "$", h.push(w), this.regexp = new RegExp(f, t.caseInsensitive ? "i" : r), this.prefix = h[0], this.$$paramNames = d
	}
	function m(e) {
		D(this, e)
	}
	function g() {
		function e(e) {
			return null != e ? e.toString().replace(/\//g, "%2F") : e
		}
		function i(e) {
			return null != e ? e.toString().replace(/%2F/g, "/") : e
		}
		function a(e) {
			return this.pattern.test(e)
		}
		function s() {
			return {
				strict: w,
				caseInsensitive: $
			}
		}
		function l(e) {
			return V(e) || N(e) && V(e[e.length - 1])
		}
		function c() {
			for (; S.length;) {
				var e = S.shift();
				if (e.pattern) throw new Error("You cannot override a type's .pattern at runtime.");
				t.extend(b[e.name], v.invoke(e.def))
			}
		}
		function f(e) {
			D(this, e || {})
		}
		T = this;
		var v, $ = !1,
			w = !0,
			y = !1,
			b = {}, E = !0,
			S = [],
			x = {
				string: {
					encode: e,
					decode: i,
					is: a,
					pattern: /[^/]*/
				},
				"int": {
					encode: e,
					decode: function(e) {
						return parseInt(e, 10)
					},
					is: function(e) {
						return I(e) && this.decode(e.toString()) === e
					},
					pattern: /\d+/
				},
				bool: {
					encode: function(e) {
						return e ? 1 : 0
					},
					decode: function(e) {
						return 0 !== parseInt(e, 10)
					},
					is: function(e) {
						return e === !0 || e === !1
					},
					pattern: /0|1/
				},
				date: {
					encode: function(e) {
						return this.is(e) ? [e.getFullYear(), ("0" + (e.getMonth() + 1)).slice(-2), ("0" + e.getDate()).slice(-2)].join("-") : r
					},
					decode: function(e) {
						if (this.is(e)) return e;
						var t = this.capture.exec(e);
						return t ? new Date(t[1], t[2] - 1, t[3]) : r
					},
					is: function(e) {
						return e instanceof Date && !isNaN(e.valueOf())
					},
					equals: function(e, t) {
						return this.is(e) && this.is(t) && e.toISOString() === t.toISOString()
					},
					pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,
					capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/
				},
				json: {
					encode: t.toJson,
					decode: t.fromJson,
					is: t.isObject,
					equals: t.equals,
					pattern: /[^/]*/
				},
				any: {
					encode: t.identity,
					decode: t.identity,
					is: t.identity,
					equals: t.equals,
					pattern: /.*/
				}
			};
		g.$$getDefaultValue = function(e) {
			if (!l(e.value)) return e.value;
			if (!v) throw new Error("Injectable functions cannot be called at configuration time");
			return v.invoke(e.value)
		}, this.caseInsensitive = function(e) {
			return I(e) && ($ = e), $
		}, this.strictMode = function(e) {
			return I(e) && (w = e), w
		}, this.defaultSquashPolicy = function(e) {
			if (!I(e)) return y;
			if (e !== !0 && e !== !1 && !M(e)) throw new Error("Invalid squash policy: " + e + ". Valid policies: false, true, arbitrary-string");
			return y = e, e
		}, this.compile = function(e, t) {
			return new d(e, D(s(), t))
		}, this.isMatcher = function(e) {
			if (!F(e)) return !1;
			var t = !0;
			return R(d.prototype, function(r, n) {
				V(r) && (t = t && I(e[n]) && V(e[n]))
			}), t
		}, this.type = function(e, t, r) {
			if (!I(t)) return b[e];
			if (b.hasOwnProperty(e)) throw new Error("A type named '" + e + "' has already been defined.");
			return b[e] = new m(D({
				name: e
			}, t)), r && (S.push({
				name: e,
				def: r
			}), E || c()), this
		}, R(x, function(e, t) {
			b[t] = new m(D({
				name: t
			}, e))
		}), b = n(b, {}), this.$get = ["$injector", function(e) {
			return v = e, E = !1, c(), R(x, function(e, t) {
				b[t] || (b[t] = new m(e))
			}), this
		}], this.Param = function(e, t, n, i) {
			function a(e) {
				var t = F(e) ? o(e) : [],
					r = -1 === u(t, "value") && -1 === u(t, "type") && -1 === u(t, "squash") && -1 === u(t, "array");
				return r && (e = {
					value: e
				}), e.$$fn = l(e.value) ? e.value : function() {
					return e.value
				}, e
			}
			function s(t, r, n) {
				if (t.type && r) throw new Error("Param '" + e + "' has two type configurations.");
				return r ? r : t.type ? t.type instanceof m ? t.type : new m(t.type) : "config" === n ? b.any : b.string
			}
			function c() {
				var t = {
					array: "search" === i ? "auto" : !1
				}, r = e.match(/\[\]$/) ? {
					array: !0
				} : {};
				return D(t, r, n).array
			}
			function f(e, t) {
				var r = e.squash;
				if (!t || r === !1) return !1;
				if (!I(r) || null == r) return y;
				if (r === !0 || M(r)) return r;
				throw new Error("Invalid squash policy: '" + r + "'. Valid policies: false, true, or arbitrary string")
			}
			function $(e, t, n, i) {
				var a, o, s = [{
					from: "",
					to: n || t ? r : ""
				}, {
					from: null,
					to: n || t ? r : ""
				}];
				return a = N(e.replace) ? e.replace : [], M(i) && a.push({
					from: i,
					to: r
				}), o = h(a, function(e) {
					return e.from
				}), p(s, function(e) {
					return -1 === u(o, e.from)
				}).concat(a)
			}
			function d() {
				if (!v) throw new Error("Injectable functions cannot be called at configuration time");
				return v.invoke(n.$$fn)
			}
			function g(e) {
				function t(e) {
					return function(t) {
						return t.from === e
					}
				}
				function r(e) {
					var r = h(p(E.replace, t(e)), function(e) {
						return e.to
					});
					return r.length ? r[0] : e
				}
				return e = r(e), I(e) ? E.type.decode(e) : d()
			}
			function w() {
				return "{Param:" + e + " " + t + " squash: '" + P + "' optional: " + x + "}"
			}
			var E = this;
			n = a(n), t = s(n, t, i);
			var S = c();
			t = S ? t.$asArray(S, "search" === i) : t, "string" !== t.name || S || "path" !== i || n.value !== r || (n.value = "");
			var x = n.value !== r,
				P = f(n, x),
				j = $(n, S, x, P);
			D(this, {
				id: e,
				type: t,
				location: i,
				array: S,
				squash: P,
				replace: j,
				isOptional: x,
				value: g,
				dynamic: r,
				config: n,
				toString: w
			})
		}, f.prototype = {
			$$new: function() {
				return n(this, D(new f, {
					$$parent: this
				}))
			},
			$$keys: function() {
				for (var e = [], t = [], r = this, n = o(f.prototype); r;) t.push(r), r = r.$$parent;
				return t.reverse(), R(t, function(t) {
					R(o(t), function(t) {
						-1 === u(e, t) && -1 === u(n, t) && e.push(t)
					})
				}), e
			},
			$$values: function(e) {
				var t = {}, r = this;
				return R(r.$$keys(), function(n) {
					t[n] = r[n].value(e && e[n])
				}), t
			},
			$$equals: function(e, t) {
				var r = !0,
					n = this;
				return R(n.$$keys(), function(i) {
					var a = e && e[i],
						o = t && t[i];
					n[i].type.equals(a, o) || (r = !1)
				}), r
			},
			$$validates: function(e) {
				var t, r, n, i = !0,
					a = this;
				return R(this.$$keys(), function(o) {
					n = a[o], r = e[o], t = !r && n.isOptional, i = i && (t || !! n.type.is(r))
				}), i
			},
			$$parent: r
		}, this.ParamSet = f
	}
	function w(e, n) {
		function i(e) {
			var t = /^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(e.source);
			return null != t ? t[1].replace(/\\(.)/g, "$1") : ""
		}
		function a(e, t) {
			return e.replace(/\$(\$|\d{1,2})/, function(e, r) {
				return t["$" === r ? 0 : Number(r)]
			})
		}
		function o(e, t, r) {
			if (!r) return !1;
			var n = e.invoke(t, t, {
				$match: r
			});
			return I(n) ? n : !0
		}
		function u(n, i, a, o) {
			function u(e, t, r) {
				return "/" === $ ? e : t ? $.slice(0, -1) + e : r ? $.slice(1) + e : e
			}
			function p(e) {
				function t(e) {
					var t = e(a, n);
					return t ? (M(t) && n.replace().url(t), !0) : !1
				}
				if (!e || !e.defaultPrevented) {
					var i = v && n.url() === v;
					if (v = r, i) return !0;
					var o, u = l.length;
					for (o = 0; u > o; o++) if (t(l[o])) return;
					c && t(c)
				}
			}
			function h() {
				return s = s || i.$on("$locationChangeSuccess", p)
			}
			var v, $ = o.baseHref(),
				d = n.url();
			return f || h(), {
				sync: function() {
					p()
				},
				listen: function() {
					return h()
				},
				update: function(e) {
					return e ? void(d = n.url()) : void(n.url() !== d && (n.url(d), n.replace()))
				},
				push: function(e, t, i) {
					n.url(e.format(t || {})), v = i && i.$$avoidResync ? n.url() : r, i && i.replace && n.replace()
				},
				href: function(r, i, a) {
					if (!r.validates(i)) return null;
					var o = e.html5Mode();
					t.isObject(o) && (o = o.enabled);
					var s = r.format(i);
					if (a = a || {}, o || null === s || (s = "#" + e.hashPrefix() + s), s = u(s, o, a.absolute), !a.absolute || !s) return s;
					var l = !o && s ? "/" : "",
						c = n.port();
					return c = 80 === c || 443 === c ? "" : ":" + c, [n.protocol(), "://", n.host(), c, l, s].join("")
				}
			}
		}
		var s, l = [],
			c = null,
			f = !1;
		this.rule = function(e) {
			if (!V(e)) throw new Error("'rule' must be a function");
			return l.push(e), this
		}, this.otherwise = function(e) {
			if (M(e)) {
				var t = e;
				e = function() {
					return t
				}
			} else if (!V(e)) throw new Error("'rule' must be a function");
			return c = e, this
		}, this.when = function(e, t) {
			var r, u = M(t);
			if (M(e) && (e = n.compile(e)), !u && !V(t) && !N(t)) throw new Error("invalid 'handler' in when()");
			var s = {
				matcher: function(e, t) {
					return u && (r = n.compile(t), t = ["$match", function(e) {
						return r.format(e)
					}]), D(function(r, n) {
						return o(r, t, e.exec(n.path(), n.search()))
					}, {
						prefix: M(e.prefix) ? e.prefix : ""
					})
				},
				regex: function(e, t) {
					if (e.global || e.sticky) throw new Error("when() RegExp must not be global or sticky");
					return u && (r = t, t = ["$match", function(e) {
						return a(r, e)
					}]), D(function(r, n) {
						return o(r, t, e.exec(n.path()))
					}, {
						prefix: i(e)
					})
				}
			}, l = {
				matcher: n.isMatcher(e),
				regex: e instanceof RegExp
			};
			for (var c in l) if (l[c]) return this.rule(s[c](e, t));
			throw new Error("invalid 'what' in when()")
		}, this.deferIntercept = function(e) {
			e === r && (e = !0), f = e
		}, this.$get = u, u.$inject = ["$location", "$rootScope", "$injector", "$browser"]
	}
	function y(e, i) {
		function a(e) {
			return 0 === e.indexOf(".") || 0 === e.indexOf("^")
		}
		function f(e, t) {
			if (!e) return r;
			var n = M(e),
				i = n ? e : e.name,
				o = a(i);
			if (o) {
				if (!t) throw new Error("No reference point given for path '" + i + "'");
				t = f(t);
				for (var u = i.split("."), s = 0, l = u.length, c = t; l > s; s++) if ("" !== u[s] || 0 !== s) {
					if ("^" !== u[s]) break;
					if (!c.parent) throw new Error("Path '" + i + "' not valid for state '" + t.name + "'");
					c = c.parent
				} else c = t;
				u = u.slice(s).join("."), i = c.name + (c.name && u ? "." : "") + u
			}
			var p = x[i];
			return !p || !n && (n || p !== e && p.self !== e) ? r : p
		}
		function p(e, t) {
			P[e] || (P[e] = []), P[e].push(t)
		}
		function v(e) {
			for (var t = P[e] || []; t.length;) $(t.shift())
		}
		function $(t) {
			t = n(t, {
				self: t,
				resolve: t.resolve || {},
				toString: function() {
					return this.name
				}
			});
			var r = t.name;
			if (!M(r) || r.indexOf("@") >= 0) throw new Error("State must have a valid name");
			if (x.hasOwnProperty(r)) throw new Error("State '" + r + "'' is already defined");
			var i = -1 !== r.indexOf(".") ? r.substring(0, r.lastIndexOf(".")) : M(t.parent) ? t.parent : F(t.parent) && M(t.parent.name) ? t.parent.name : "";
			if (i && !x[i]) return p(i, t.self);
			for (var a in O) V(O[a]) && (t[a] = O[a](t, O.$delegates[a]));
			return x[r] = t, !t[j] && t.url && e.when(t.url, ["$match", "$stateParams", function(e, r) {
				S.$current.navigable == t && l(e, r) || S.transitionTo(t, e, {
					inherit: !0,
					location: !1
				})
			}]), v(r), t
		}
		function d(e) {
			return e.indexOf("*") > -1
		}
		function m(e) {
			var t = e.split("."),
				r = S.$current.name.split(".");
			if ("**" === t[0] && (r = r.slice(u(r, t[1])), r.unshift("**")), "**" === t[t.length - 1] && (r.splice(u(r, t[t.length - 2]) + 1, Number.MAX_VALUE), r.push("**")), t.length != r.length) return !1;
			for (var n = 0, i = t.length; i > n; n++) "*" === t[n] && (r[n] = "*");
			return r.join("") === t.join("")
		}
		function g(e, t) {
			return M(e) && !I(t) ? O[e] : V(t) && M(e) ? (O[e] && !O.$delegates[e] && (O.$delegates[e] = O[e]), O[e] = t, this) : this
		}
		function w(e, t) {
			return F(e) ? t = e : t.name = e, $(t), this
		}
		function y(e, i, a, u, p, v, $) {
			function g(t, r, n, a) {
				var o = e.$broadcast("$stateNotFound", t, r, n);
				if (o.defaultPrevented) return $.update(), O;
				if (!o.retry) return null;
				if (a.$retry) return $.update(), A;
				var u = S.transition = i.when(o.retry);
				return u.then(function() {
					return u !== S.transition ? y : (t.options.$retry = !0, S.transitionTo(t.to, t.toParams, t.options))
				}, function() {
					return O
				}), $.update(), u
			}
			function w(e, r, n, o, s, l) {
				var f = n ? r : c(e.params.$$keys(), r),
					h = {
						$stateParams: f
					};
				s.resolve = p.resolve(e.resolve, h, s.resolve, e);
				var v = [s.resolve.then(function(e) {
					s.globals = e
				})];
				return o && v.push(o), R(e.views, function(r, n) {
					var i = r.resolve && r.resolve !== e.resolve ? r.resolve : {};
					i.$template = [function() {
						return a.load(n, {
							view: r,
							locals: h,
							params: f,
							notify: l.notify
						}) || ""
					}], v.push(p.resolve(i, h, s.resolve, e).then(function(a) {
						if (V(r.controllerProvider) || N(r.controllerProvider)) {
							var o = t.extend({}, i, h);
							a.$$controller = u.invoke(r.controllerProvider, null, o)
						} else a.$$controller = r.controller;
						a.$$state = e, a.$$controllerAs = r.controllerAs, s[n] = a
					}))
				}), i.all(v).then(function() {
					return s
				})
			}
			var y = i.reject(new Error("transition superseded")),
				P = i.reject(new Error("transition prevented")),
				O = i.reject(new Error("transition aborted")),
				A = i.reject(new Error("transition failed"));
			return E.locals = {
				resolve: null,
				globals: {
					$stateParams: {}
				}
			}, S = {
				params: {},
				current: E.self,
				$current: E,
				transition: null
			}, S.reload = function() {
				return S.transitionTo(S.current, v, {
					reload: !0,
					inherit: !1,
					notify: !0
				})
			}, S.go = function(e, t, r) {
				return S.transitionTo(e, t, D({
					inherit: !0,
					relative: S.$current
				}, r))
			}, S.transitionTo = function(t, r, a) {
				r = r || {}, a = D({
					location: !0,
					inherit: !1,
					relative: null,
					notify: !0,
					reload: !1,
					$retry: !1
				}, a || {});
				var o, l = S.$current,
					p = S.params,
					h = l.path,
					d = f(t, a.relative);
				if (!I(d)) {
					var m = {
						to: t,
						toParams: r,
						options: a
					}, x = g(m, l.self, p, a);
					if (x) return x;
					if (t = m.to, r = m.toParams, a = m.options, d = f(t, a.relative), !I(d)) {
						if (!a.relative) throw new Error("No such state '" + t + "'");
						throw new Error("Could not resolve '" + t + "' from state '" + a.relative + "'")
					}
				}
				if (d[j]) throw new Error("Cannot transition to abstract state '" + t + "'");
				if (a.inherit && (r = s(v, r || {}, S.$current, d)), !d.params.$$validates(r)) return A;
				r = d.params.$$values(r), t = d;
				var O = t.path,
					q = 0,
					C = O[q],
					k = E.locals,
					V = [];
				if (!a.reload) for (; C && C === h[q] && C.ownParams.$$equals(r, p);) k = V[q] = C.locals, q++, C = O[q];
				if (b(t, l, k, a)) return t.self.reloadOnSearch !== !1 && $.update(), S.transition = null, i.when(S.current);
				if (r = c(t.params.$$keys(), r || {}), a.notify && e.$broadcast("$stateChangeStart", t.self, r, l.self, p).defaultPrevented) return $.update(), P;
				for (var M = i.when(k), F = q; F < O.length; F++, C = O[F]) k = V[F] = n(k), M = w(C, r, C === t, M, k, a);
				var N = S.transition = M.then(function() {
					var n, i, o;
					if (S.transition !== N) return y;
					for (n = h.length - 1; n >= q; n--) o = h[n], o.self.onExit && u.invoke(o.self.onExit, o.self, o.locals.globals), o.locals = null;
					for (n = q; n < O.length; n++) i = O[n], i.locals = V[n], i.self.onEnter && u.invoke(i.self.onEnter, i.self, i.locals.globals);
					return S.transition !== N ? y : (S.$current = t, S.current = t.self, S.params = r, U(S.params, v), S.transition = null, a.location && t.navigable && $.push(t.navigable.url, t.navigable.locals.globals.$stateParams, {
						$$avoidResync: !0,
						replace: "replace" === a.location
					}), a.notify && e.$broadcast("$stateChangeSuccess", t.self, r, l.self, p), $.update(!0), S.current)
				}, function(n) {
					return S.transition !== N ? y : (S.transition = null, o = e.$broadcast("$stateChangeError", t.self, r, l.self, p, n), o.defaultPrevented || $.update(), i.reject(n))
				});
				return N
			}, S.is = function(e, t, n) {
				n = D({
					relative: S.$current
				}, n || {});
				var i = f(e, n.relative);
				return I(i) ? S.$current !== i ? !1 : t ? l(i.params.$$values(t), v) : !0 : r
			}, S.includes = function(e, t, n) {
				if (n = D({
					relative: S.$current
				}, n || {}), M(e) && d(e)) {
					if (!m(e)) return !1;
					e = S.$current.name
				}
				var i = f(e, n.relative);
				return I(i) ? I(S.$current.includes[i.name]) ? t ? l(i.params.$$values(t), v, o(t)) : !0 : !1 : r
			}, S.href = function(e, t, n) {
				n = D({
					lossy: !0,
					inherit: !0,
					absolute: !1,
					relative: S.$current
				}, n || {});
				var i = f(e, n.relative);
				if (!I(i)) return null;
				n.inherit && (t = s(v, t || {}, S.$current, i));
				var a = i && n.lossy ? i.navigable : i;
				return a && a.url !== r && null !== a.url ? $.href(a.url, c(i.params.$$keys(), t || {}), {
					absolute: n.absolute
				}) : null
			}, S.get = function(e, t) {
				if (0 === arguments.length) return h(o(x), function(e) {
					return x[e].self
				});
				var r = f(e, t || S.$current);
				return r && r.self ? r.self : null
			}, S
		}
		function b(e, t, r, n) {
			return e !== t || (r !== t.locals || n.reload) && e.self.reloadOnSearch !== !1 ? void 0 : !0
		}
		var E, S, x = {}, P = {}, j = "abstract",
			O = {
				parent: function(e) {
					if (I(e.parent) && e.parent) return f(e.parent);
					var t = /^(.+)\.[^.]+$/.exec(e.name);
					return t ? f(t[1]) : E
				},
				data: function(e) {
					return e.parent && e.parent.data && (e.data = e.self.data = D({}, e.parent.data, e.data)), e.data
				},
				url: function(e) {
					var t = e.url,
						r = {
							params: e.params || {}
						};
					if (M(t)) return "^" == t.charAt(0) ? i.compile(t.substring(1), r) : (e.parent.navigable || E).url.concat(t, r);
					if (!t || i.isMatcher(t)) return t;
					throw new Error("Invalid url '" + t + "' in state '" + e + "'")
				},
				navigable: function(e) {
					return e.url ? e : e.parent ? e.parent.navigable : null
				},
				ownParams: function(e) {
					var t = e.url && e.url.params || new T.ParamSet;
					return R(e.params || {}, function(e, r) {
						t[r] || (t[r] = new T.Param(r, null, e, "config"))
					}), t
				},
				params: function(e) {
					return e.parent && e.parent.params ? D(e.parent.params.$$new(), e.ownParams) : new T.ParamSet
				},
				views: function(e) {
					var t = {};
					return R(I(e.views) ? e.views : {
						"": e
					}, function(r, n) {
						n.indexOf("@") < 0 && (n += "@" + e.parent.name), t[n] = r
					}), t
				},
				path: function(e) {
					return e.parent ? e.parent.path.concat(e) : []
				},
				includes: function(e) {
					var t = e.parent ? D({}, e.parent.includes) : {};
					return t[e.name] = !0, t
				},
				$delegates: {}
			};
		E = $({
			name: "",
			url: "^",
			views: null,
			"abstract": !0
		}), E.navigable = null, this.decorator = g, this.state = w, this.$get = y, y.$inject = ["$rootScope", "$q", "$view", "$injector", "$resolve", "$stateParams", "$urlRouter", "$location", "$urlMatcherFactory"]
	}
	function b() {
		function e(e, t) {
			return {
				load: function(r, n) {
					var i, a = {
						template: null,
						controller: null,
						view: null,
						locals: null,
						notify: !0,
						async: !0,
						params: {}
					};
					return n = D(a, n), n.view && (i = t.fromConfig(n.view, n.params, n.locals)), i && n.notify && e.$broadcast("$viewContentLoading", n), i
				}
			}
		}
		this.$get = e, e.$inject = ["$rootScope", "$templateFactory"]
	}
	function E() {
		var e = !1;
		this.useAnchorScroll = function() {
			e = !0
		}, this.$get = ["$anchorScroll", "$timeout", function(t, r) {
			return e ? t : function(e) {
				r(function() {
					e[0].scrollIntoView()
				}, 0, !1)
			}
		}]
	}
	function S(e, r, n, i) {
		function a() {
			return r.has ? function(e) {
				return r.has(e) ? r.get(e) : null
			} : function(e) {
				try {
					return r.get(e)
				} catch (t) {
					return null
				}
			}
		}
		function o(e, t) {
			var r = function() {
				return {
					enter: function(e, t, r) {
						t.after(e), r()
					},
					leave: function(e, t) {
						e.remove(), t()
					}
				}
			};
			if (l) return {
				enter: function(e, t, r) {
					var n = l.enter(e, null, t, r);
					n && n.then && n.then(r)
				},
				leave: function(e, t) {
					var r = l.leave(e, t);
					r && r.then && r.then(t)
				}
			};
			if (s) {
				var n = s && s(t, e);
				return {
					enter: function(e, t, r) {
						n.enter(e, null, t), r()
					},
					leave: function(e, t) {
						n.leave(e), t()
					}
				}
			}
			return r()
		}
		var u = a(),
			s = u("$animator"),
			l = u("$animate"),
			c = {
				restrict: "ECA",
				terminal: !0,
				priority: 400,
				transclude: "element",
				compile: function(r, a, u) {
					return function(r, a, s) {
						function l() {
							f && (f.remove(), f = null), h && (h.$destroy(), h = null), p && (m.leave(p, function() {
								f = null
							}), f = p, p = null)
						}
						function c(o) {
							var c, f = P(r, s, a, i),
								g = f && e.$current && e.$current.locals[f];
							if (o || g !== v) {
								c = r.$new(), v = e.$current.locals[f];
								var w = u(c, function(e) {
									m.enter(e, a, function() {
										h && h.$emit("$viewContentAnimationEnded"), (t.isDefined(d) && !d || r.$eval(d)) && n(e)
									}), l()
								});
								p = w, h = c, h.$emit("$viewContentLoaded"), h.$eval($)
							}
						}
						var f, p, h, v, $ = s.onload || "",
							d = s.autoscroll,
							m = o(s, r);
						r.$on("$stateChangeSuccess", function() {
							c(!1)
						}), r.$on("$viewContentLoading", function() {
							c(!1)
						}), c(!0)
					}
				}
			};
		return c
	}
	function x(e, t, r, n) {
		return {
			restrict: "ECA",
			priority: -400,
			compile: function(i) {
				var a = i.html();
				return function(i, o, u) {
					var s = r.$current,
						l = P(i, u, o, n),
						c = s && s.locals[l];
					if (c) {
						o.data("$uiView", {
							name: l,
							state: c.$$state
						}), o.html(c.$template ? c.$template : a);
						var f = e(o.contents());
						if (c.$$controller) {
							c.$scope = i;
							var p = t(c.$$controller, c);
							c.$$controllerAs && (i[c.$$controllerAs] = p), o.data("$ngControllerController", p), o.children().data("$ngControllerController", p)
						}
						f(i)
					}
				}
			}
		}
	}
	function P(e, t, r, n) {
		var i = n(t.uiView || t.name || "")(e),
			a = r.inheritedData("$uiView");
		return i.indexOf("@") >= 0 ? i : i + "@" + (a ? a.state.name : "")
	}
	function j(e, t) {
		var r, n = e.match(/^\s*({[^}]*})\s*$/);
		if (n && (e = t + "(" + n[1] + ")"), r = e.replace(/\n/g, " ").match(/^([^(]+?)\s*(\((.*)\))?$/), !r || 4 !== r.length) throw new Error("Invalid state ref '" + e + "'");
		return {
			state: r[1],
			paramExpr: r[3] || null
		}
	}
	function O(e) {
		var t = e.parent().inheritedData("$uiView");
		return t && t.state && t.state.name ? t.state : void 0
	}
	function A(e, r) {
		var n = ["location", "inherit", "reload"];
		return {
			restrict: "A",
			require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
			link: function(i, a, o, u) {
				var s = j(o.uiSref, e.current.name),
					l = null,
					c = O(a) || e.$current,
					f = null,
					p = "A" === a.prop("tagName"),
					h = "FORM" === a[0].nodeName,
					v = h ? "action" : "href",
					$ = !0,
					d = {
						relative: c,
						inherit: !0
					}, m = i.$eval(o.uiSrefOpts) || {};
				t.forEach(n, function(e) {
					e in m && (d[e] = m[e])
				});
				var g = function(r) {
					if (r && (l = t.copy(r)), $) {
						f = e.href(s.state, l, d);
						var n = u[1] || u[0];
						return n && n.$$setStateInfo(s.state, l), null === f ? ($ = !1, !1) : void o.$set(v, f)
					}
				};
				s.paramExpr && (i.$watch(s.paramExpr, function(e) {
					e !== l && g(e)
				}, !0), l = t.copy(i.$eval(s.paramExpr))), g(), h || a.bind("click", function(t) {
					var n = t.which || t.button;
					if (!(n > 1 || t.ctrlKey || t.metaKey || t.shiftKey || a.attr("target"))) {
						var i = r(function() {
							e.go(s.state, l, d)
						});
						t.preventDefault();
						var o = p && !f ? 1 : 0;
						t.preventDefault = function() {
							o-- <= 0 && r.cancel(i)
						}
					}
				})
			}
		}
	}
	function q(e, t, r) {
		return {
			restrict: "A",
			controller: ["$scope", "$element", "$attrs", function(t, n, i) {
				function a() {
					o() ? n.addClass(l) : n.removeClass(l)
				}
				function o() {
					return "undefined" != typeof i.uiSrefActiveEq ? u && e.is(u.name, s) : u && e.includes(u.name, s)
				}
				var u, s, l;
				l = r(i.uiSrefActiveEq || i.uiSrefActive || "", !1)(t), this.$$setStateInfo = function(t, r) {
					u = e.get(t, O(n)), s = r, a()
				}, t.$on("$stateChangeSuccess", a)
			}]
		}
	}
	function C(e) {
		var t = function(t) {
			return e.is(t)
		};
		return t.$stateful = !0, t
	}
	function k(e) {
		var t = function(t) {
			return e.includes(t)
		};
		return t.$stateful = !0, t
	}
	var I = t.isDefined,
		V = t.isFunction,
		M = t.isString,
		F = t.isObject,
		N = t.isArray,
		R = t.forEach,
		D = t.extend,
		U = t.copy;
	t.module("ui.router.util", ["ng"]), t.module("ui.router.router", ["ui.router.util"]), t.module("ui.router.state", ["ui.router.router", "ui.router.util"]), t.module("ui.router", ["ui.router.state"]), t.module("ui.router.compat", ["ui.router"]), v.$inject = ["$q", "$injector"], t.module("ui.router.util").service("$resolve", v), $.$inject = ["$http", "$templateCache", "$injector"], t.module("ui.router.util").service("$templateFactory", $);
	var T;
	d.prototype.concat = function(e, t) {
		var r = {
			caseInsensitive: T.caseInsensitive(),
			strict: T.strictMode(),
			squash: T.defaultSquashPolicy()
		};
		return new d(this.sourcePath + e + this.sourceSearch, D(r, t), this)
	}, d.prototype.toString = function() {
		return this.source
	}, d.prototype.exec = function(e, t) {
		function r(e) {
			function t(e) {
				return e.split("").reverse().join("")
			}
			function r(e) {
				return e.replace(/\\-/, "-")
			}
			var n = t(e).split(/-(?!\\)/),
				i = h(n, t);
			return h(i, r).reverse()
		}
		var n = this.regexp.exec(e);
		if (!n) return null;
		t = t || {};
		var i, a, o, u = this.parameters(),
			s = u.length,
			l = this.segments.length - 1,
			c = {};
		if (l !== n.length - 1) throw new Error("Unbalanced capture group in route '" + this.source + "'");
		for (i = 0; l > i; i++) {
			o = u[i];
			var f = this.params[o],
				p = n[i + 1];
			for (a = 0; a < f.replace; a++) f.replace[a].from === p && (p = f.replace[a].to);
			p && f.array === !0 && (p = r(p)), c[o] = f.value(p)
		}
		for (; s > i; i++) o = u[i], c[o] = this.params[o].value(t[o]);
		return c
	}, d.prototype.parameters = function(e) {
		return I(e) ? this.params[e] || null : this.$$paramNames
	}, d.prototype.validates = function(e) {
		return this.params.$$validates(e)
	}, d.prototype.format = function(e) {
		function t(e) {
			return encodeURIComponent(e).replace(/-/g, function(e) {
				return "%5C%" + e.charCodeAt(0).toString(16).toUpperCase()
			})
		}
		e = e || {};
		var r = this.segments,
			n = this.parameters(),
			i = this.params;
		if (!this.validates(e)) return null;
		var a, o = !1,
			u = r.length - 1,
			s = n.length,
			l = r[0];
		for (a = 0; s > a; a++) {
			var c = u > a,
				f = n[a],
				p = i[f],
				v = p.value(e[f]),
				$ = p.isOptional && p.type.equals(p.value(), v),
				d = $ ? p.squash : !1,
				m = p.type.encode(v);
			if (c) {
				var g = r[a + 1];
				if (d === !1) null != m && (l += N(m) ? h(m, t).join("-") : encodeURIComponent(m)), l += g;
				else if (d === !0) {
					var w = l.match(/\/$/) ? /\/?(.*)/ : /(.*)/;
					l += g.match(w)[1]
				} else M(d) && (l += d + g)
			} else {
				if (null == m || $ && d !== !1) continue;
				N(m) || (m = [m]), m = h(m, encodeURIComponent).join("&" + f + "="), l += (o ? "&" : "?") + (f + "=" + m), o = !0
			}
		}
		return l
	}, m.prototype.is = function() {
		return !0
	}, m.prototype.encode = function(e) {
		return e
	}, m.prototype.decode = function(e) {
		return e
	}, m.prototype.equals = function(e, t) {
		return e == t
	}, m.prototype.$subPattern = function() {
		var e = this.pattern.toString();
		return e.substr(1, e.length - 2)
	}, m.prototype.pattern = /.*/, m.prototype.toString = function() {
		return "{Type:" + this.name + "}"
	}, m.prototype.$asArray = function(e, t) {
		function n(e, t) {
			function n(e, t) {
				return function() {
					return e[t].apply(e, arguments)
				}
			}
			function i(e) {
				return N(e) ? e : I(e) ? [e] : []
			}
			function a(e) {
				switch (e.length) {
					case 0:
						return r;
					case 1:
						return "auto" === t ? e[0] : e;
					default:
						return e
				}
			}
			function o(e) {
				return !e
			}
			function u(e, t) {
				return function(r) {
					r = i(r);
					var n = h(r, e);
					return t === !0 ? 0 === p(n, o).length : a(n)
				}
			}
			function s(e) {
				return function(t, r) {
					var n = i(t),
						a = i(r);
					if (n.length !== a.length) return !1;
					for (var o = 0; o < n.length; o++) if (!e(n[o], a[o])) return !1;
					return !0
				}
			}
			this.encode = u(n(e, "encode")), this.decode = u(n(e, "decode")), this.is = u(n(e, "is"), !0), this.equals = s(n(e, "equals")), this.pattern = e.pattern, this.$arrayMode = t
		}
		if (!e) return this;
		if ("auto" === e && !t) throw new Error("'auto' array mode is for query parameters only");
		return new n(this, e)
	}, t.module("ui.router.util").provider("$urlMatcherFactory", g), t.module("ui.router.util").run(["$urlMatcherFactory", function() {}]), w.$inject = ["$locationProvider", "$urlMatcherFactoryProvider"], t.module("ui.router.router").provider("$urlRouter", w), y.$inject = ["$urlRouterProvider", "$urlMatcherFactoryProvider"], t.module("ui.router.state").value("$stateParams", {}).provider("$state", y), b.$inject = [], t.module("ui.router.state").provider("$view", b), t.module("ui.router.state").provider("$uiViewScroll", E), S.$inject = ["$state", "$injector", "$uiViewScroll", "$interpolate"], x.$inject = ["$compile", "$controller", "$state", "$interpolate"], t.module("ui.router.state").directive("uiView", S), t.module("ui.router.state").directive("uiView", x), A.$inject = ["$state", "$timeout"], q.$inject = ["$state", "$stateParams", "$interpolate"], t.module("ui.router.state").directive("uiSref", A).directive("uiSrefActive", q).directive("uiSrefActiveEq", q), C.$inject = ["$state"], k.$inject = ["$state"], t.module("ui.router.state").filter("isState", C).filter("includedByState", k)
}(window, window.angular);
"use strict";
! function() {
	function e(e) {
		return ["$rootScope", "$window", function(n, o) {
			for (var a, r, t, l = o[e] || (console.warn("This browser does not support Web Storage!"), {}), u = {
				$default: function(e) {
					for (var n in e) angular.isDefined(u[n]) || (u[n] = e[n]);
					return u
				},
				$reset: function(e) {
					for (var n in u) "$" === n[0] || delete u[n];
					return u.$default(e)
				}
			}, g = 0; g < l.length; g++)(t = l.key(g)) && "ngStorage-" === t.slice(0, 10) && (u[t.slice(10)] = angular.fromJson(l.getItem(t)));
			return a = angular.copy(u), n.$watch(function() {
				r || (r = setTimeout(function() {
					if (r = null, !angular.equals(u, a)) {
						angular.forEach(u, function(e, n) {
							angular.isDefined(e) && "$" !== n[0] && l.setItem("ngStorage-" + n, angular.toJson(e)), delete a[n]
						});
						for (var e in a) l.removeItem("ngStorage-" + e);
						a = angular.copy(u)
					}
				}, 100))
			}), "localStorage" === e && o.addEventListener && o.addEventListener("storage", function(e) {
				"ngStorage-" === e.key.slice(0, 10) && (e.newValue ? u[e.key.slice(10)] = angular.fromJson(e.newValue) : delete u[e.key.slice(10)], a = angular.copy(u), n.$apply())
			}), u
		}]
	}
	angular.module("ngStorage", []).factory("$localStorage", e("localStorage")).factory("$sessionStorage", e("sessionStorage"))
}();
"use strict";
angular.module("ui.alias", []).config(["$compileProvider", "uiAliasConfig", function(e, n) {
	n = n || {}, angular.forEach(n, function(n, t) {
		angular.isString(n) && (n = {
			replace: !0,
			template: n
		}), e.directive(t, function() {
			return n
		})
	})
}]), angular.module("ui.event", []).directive("uiEvent", ["$parse", function(e) {
	return function(n, t, r) {
		var i = n.$eval(r.uiEvent);
		angular.forEach(i, function(r, i) {
			var u = e(r);
			t.bind(i, function(e) {
				var t = Array.prototype.slice.call(arguments);
				t = t.splice(1), u(n, {
					$event: e,
					$params: t
				}), n.$$phase || n.$apply()
			})
		})
	}
}]), angular.module("ui.format", []).filter("format", function() {
	return function(e, n) {
		var t = e;
		if (angular.isString(t) && void 0 !== n) if (angular.isArray(n) || angular.isObject(n) || (n = [n]), angular.isArray(n)) {
			var r = n.length,
				i = function(e, t) {
					return t = parseInt(t, 10), t >= 0 && r > t ? n[t] : e
				};
			t = t.replace(/\$([0-9]+)/g, i)
		} else angular.forEach(n, function(e, n) {
			t = t.split(":" + n).join(e)
		});
		return t
	}
}), angular.module("ui.highlight", []).filter("highlight", function() {
	return function(e, n, t) {
		return n || angular.isNumber(n) ? (e = e.toString(), n = n.toString(), t ? e.split(n).join('<span class="ui-match">' + n + "</span>") : e.replace(new RegExp(n, "gi"), '<span class="ui-match">$&</span>')) : e
	}
}), angular.module("ui.include", []).directive("uiInclude", ["$http", "$templateCache", "$anchorScroll", "$compile", function(e, n, t, r) {
	return {
		restrict: "ECA",
		terminal: !0,
		compile: function(i, u) {
			var o = u.uiInclude || u.src,
				a = u.fragment || "",
				l = u.onload || "",
				c = u.autoscroll;
			return function(i, u) {
				function s() {
					var s = ++d,
						p = i.$eval(o),
						h = i.$eval(a);
					p ? e.get(p, {
						cache: n
					}).success(function(e) {
						if (s === d) {
							f && f.$destroy(), f = i.$new();
							var n;
							n = h ? angular.element("<div/>").html(e).find(h) : angular.element("<div/>").html(e).contents(), u.html(n), r(n)(f), !angular.isDefined(c) || c && !i.$eval(c) || t(), f.$emit("$includeContentLoaded"), i.$eval(l)
						}
					}).error(function() {
						s === d && g()
					}) : g()
				}
				var f, d = 0,
					g = function() {
						f && (f.$destroy(), f = null), u.html("")
					};
				i.$watch(a, s), i.$watch(o, s)
			}
		}
	}
}]), angular.module("ui.indeterminate", []).directive("uiIndeterminate", [function() {
	return {
		compile: function(e, n) {
			return n.type && "checkbox" === n.type.toLowerCase() ? function(e, n, t) {
				e.$watch(t.uiIndeterminate, function(e) {
					n[0].indeterminate = !! e
				})
			} : angular.noop
		}
	}
}]), angular.module("ui.inflector", []).filter("inflector", function() {
	function e(e) {
		return e.replace(/^([a-z])|\s+([a-z])/g, function(e) {
			return e.toUpperCase()
		})
	}
	function n(e, n) {
		return e.replace(/[A-Z]/g, function(e) {
			return n + e
		})
	}
	var t = {
		humanize: function(t) {
			return e(n(t, " ").split("_").join(" "))
		},
		underscore: function(e) {
			return e.substr(0, 1).toLowerCase() + n(e.substr(1), "_").toLowerCase().split(" ").join("_")
		},
		variable: function(n) {
			return n = n.substr(0, 1).toLowerCase() + e(n.split("_").join(" ")).substr(1).split(" ").join("")
		}
	};
	return function(e, n) {
		return n !== !1 && angular.isString(e) ? (n = n || "humanize", t[n](e)) : e
	}
}), angular.module("ui.jq", []).value("uiJqConfig", {}).directive("uiJq", ["uiJqConfig", "$timeout", function(e, n) {
	return {
		restrict: "A",
		compile: function(t, r) {
			if (!angular.isFunction(t[r.uiJq])) throw new Error('ui-jq: The "' + r.uiJq + '" function does not exist');
			var i = e && e[r.uiJq];
			return function(e, t, r) {
				function u() {
					n(function() {
						t[r.uiJq].apply(t, o)
					}, 0, !1)
				}
				var o = [];
				r.uiOptions ? (o = e.$eval("[" + r.uiOptions + "]"), angular.isObject(i) && angular.isObject(o[0]) && (o[0] = angular.extend({}, i, o[0]))) : i && (o = [i]), r.ngModel && t.is("select,input,textarea") && t.bind("change", function() {
					t.trigger("input")
				}), r.uiRefresh && e.$watch(r.uiRefresh, function() {
					u()
				}), u()
			}
		}
	}
}]), angular.module("ui.keypress", []).factory("keypressHelper", ["$parse", function(e) {
	var n = {
		8: "backspace",
		9: "tab",
		13: "enter",
		27: "esc",
		32: "space",
		33: "pageup",
		34: "pagedown",
		35: "end",
		36: "home",
		37: "left",
		38: "up",
		39: "right",
		40: "down",
		45: "insert",
		46: "delete"
	}, t = function(e) {
		return e.charAt(0).toUpperCase() + e.slice(1)
	};
	return function(r, i, u, o) {
		var a, l = [];
		a = i.$eval(o["ui" + t(r)]), angular.forEach(a, function(n, t) {
			var r, i;
			i = e(n), angular.forEach(t.split(" "), function(e) {
				r = {
					expression: i,
					keys: {}
				}, angular.forEach(e.split("-"), function(e) {
					r.keys[e] = !0
				}), l.push(r)
			})
		}), u.bind(r, function(e) {
			var t = !(!e.metaKey || e.ctrlKey),
				u = !! e.altKey,
				o = !! e.ctrlKey,
				a = !! e.shiftKey,
				c = e.keyCode;
			"keypress" === r && !a && c >= 97 && 122 >= c && (c -= 32), angular.forEach(l, function(r) {
				var l = r.keys[n[c]] || r.keys[c.toString()],
					s = !! r.keys.meta,
					f = !! r.keys.alt,
					d = !! r.keys.ctrl,
					g = !! r.keys.shift;
				l && s === t && f === u && d === o && g === a && i.$apply(function() {
					r.expression(i, {
						$event: e
					})
				})
			})
		})
	}
}]), angular.module("ui.keypress").directive("uiKeydown", ["keypressHelper", function(e) {
	return {
		link: function(n, t, r) {
			e("keydown", n, t, r)
		}
	}
}]), angular.module("ui.keypress").directive("uiKeypress", ["keypressHelper", function(e) {
	return {
		link: function(n, t, r) {
			e("keypress", n, t, r)
		}
	}
}]), angular.module("ui.keypress").directive("uiKeyup", ["keypressHelper", function(e) {
	return {
		link: function(n, t, r) {
			e("keyup", n, t, r)
		}
	}
}]), angular.module("ui.mask", []).value("uiMaskConfig", {
	maskDefinitions: {
		9: /\d/,
		A: /[a-zA-Z]/,
		"*": /[a-zA-Z0-9]/
	}
}).directive("uiMask", ["uiMaskConfig", function(e) {
	return {
		priority: 100,
		require: "ngModel",
		restrict: "A",
		compile: function() {
			var n = e;
			return function(e, t, r, i) {
				function u(e) {
					return angular.isDefined(e) ? ($(e), _ ? (s(), f(), !0) : c()) : c()
				}
				function o(e) {
					angular.isDefined(e) && (V = e, _ && x())
				}
				function a(e) {
					return _ ? (A = p(e || ""), j = g(A), i.$setValidity("mask", j), j && A.length ? h(A) : void 0) : e
				}
				function l(e) {
					return _ ? (A = p(e || ""), j = g(A), i.$viewValue = A.length ? h(A) : "", i.$setValidity("mask", j), "" === A && void 0 !== i.$error.required && i.$setValidity("required", !1), j ? A : void 0) : e
				}
				function c() {
					return _ = !1, d(), angular.isDefined(F) ? t.attr("placeholder", F) : t.removeAttr("placeholder"), angular.isDefined(K) ? t.attr("maxlength", K) : t.removeAttr("maxlength"), t.val(i.$modelValue), i.$viewValue = i.$modelValue, !1
				}
				function s() {
					A = D = p(i.$modelValue || ""), P = T = h(A), j = g(A);
					var e = j && A.length ? P : "";
					r.maxlength && t.attr("maxlength", 2 * H[H.length - 1]), t.attr("placeholder", V), t.val(e), i.$viewValue = e
				}
				function f() {
					z || (t.bind("blur", b), t.bind("mousedown mouseup", y), t.bind("input keyup click focus", x), z = !0)
				}
				function d() {
					z && (t.unbind("blur", b), t.unbind("mousedown", y), t.unbind("mouseup", y), t.unbind("input", x), t.unbind("keyup", x), t.unbind("click", x), t.unbind("focus", x), z = !1)
				}
				function g(e) {
					return e.length ? e.length >= R : !0
				}
				function p(e) {
					var n = "",
						t = O.slice();
					return e = e.toString(), angular.forEach(q, function(n) {
						e = e.replace(n, "")
					}), angular.forEach(e.split(""), function(e) {
						t.length && t[0].test(e) && (n += e, t.shift())
					}), n
				}
				function h(e) {
					var n = "",
						t = H.slice();
					return angular.forEach(V.split(""), function(r, i) {
						e.length && i === t[0] ? (n += e.charAt(0) || "_", e = e.substr(1), t.shift()) : n += r
					}), n
				}
				function m(e) {
					var n = r.placeholder;
					return "undefined" != typeof n && n[e] ? n[e] : "_"
				}
				function v() {
					return V.replace(/[_]+/g, "_").replace(/([^_]+)([a-zA-Z0-9])([^_])/g, "$1$2_$3").split("_")
				}
				function $(e) {
					var n = 0;
					if (H = [], O = [], V = "", "string" == typeof e) {
						R = 0;
						var t = !1,
							r = e.split("");
						angular.forEach(r, function(e, r) {
							W.maskDefinitions[e] ? (H.push(n), V += m(r), O.push(W.maskDefinitions[e]), n++, t || R++) : "?" === e ? t = !0 : (V += e, n++)
						})
					}
					H.push(H.slice().pop() + 1), q = v(), _ = H.length > 1 ? !0 : !1
				}
				function b() {
					M = 0, L = 0, j && 0 !== A.length || (P = "", t.val(""), e.$apply(function() {
						i.$setViewValue("")
					}))
				}
				function y(e) {
					"mousedown" === e.type ? t.bind("mouseout", w) : t.unbind("mouseout", w)
				}
				function w() {
					L = C(this), t.unbind("mouseout", w)
				}
				function x(n) {
					n = n || {};
					var r = n.which,
						u = n.type;
					if (16 !== r && 91 !== r) {
						var o, a = t.val(),
							l = T,
							c = p(a),
							s = D,
							f = !1,
							d = S(this) || 0,
							g = M || 0,
							m = d - g,
							v = H[0],
							$ = H[c.length] || H.slice().shift(),
							b = L || 0,
							y = C(this) > 0,
							w = b > 0,
							x = a.length > l.length || b && a.length > l.length - b,
							O = a.length < l.length || b && a.length === l.length - b,
							V = r >= 37 && 40 >= r && n.shiftKey,
							q = 37 === r,
							R = 8 === r || "keyup" !== u && O && -1 === m,
							A = 46 === r || "keyup" !== u && O && 0 === m && !w,
							P = (q || R || "click" === u) && d > v;
						if (L = C(this), !V && (!y || "click" !== u && "keyup" !== u)) {
							if ("input" === u && O && !w && c === s) {
								for (; R && d > v && !k(d);) d--;
								for (; A && $ > d && -1 === H.indexOf(d);) d++;
								var j = H.indexOf(d);
								c = c.substring(0, j) + c.substring(j + 1), f = !0
							}
							for (o = h(c), T = o, D = c, t.val(o), f && e.$apply(function() {
								i.$setViewValue(c)
							}), x && v >= d && (d = v + 1), P && d--, d = d > $ ? $ : v > d ? v : d; !k(d) && d > v && $ > d;) d += P ? -1 : 1;
							(P && $ > d || x && !k(g)) && d++, M = d, E(this, d)
						}
					}
				}
				function k(e) {
					return H.indexOf(e) > -1
				}
				function S(e) {
					if (!e) return 0;
					if (void 0 !== e.selectionStart) return e.selectionStart;
					if (document.selection) {
						e.focus();
						var n = document.selection.createRange();
						return n.moveStart("character", -e.value.length), n.text.length
					}
					return 0
				}
				function E(e, n) {
					if (!e) return 0;
					if (0 !== e.offsetWidth && 0 !== e.offsetHeight) if (e.setSelectionRange) e.focus(), e.setSelectionRange(n, n);
					else if (e.createTextRange) {
						var t = e.createTextRange();
						t.collapse(!0), t.moveEnd("character", n), t.moveStart("character", n), t.select()
					}
				}
				function C(e) {
					return e ? void 0 !== e.selectionStart ? e.selectionEnd - e.selectionStart : document.selection ? document.selection.createRange().text.length : 0 : 0
				}
				var H, O, V, q, R, A, P, j, T, D, M, L, _ = !1,
					z = !1,
					F = r.placeholder,
					K = r.maxlength,
					W = {};
				r.uiOptions ? (W = e.$eval("[" + r.uiOptions + "]"), angular.isObject(W[0]) && (W = function(e, n) {
					for (var t in e) Object.prototype.hasOwnProperty.call(e, t) && (n[t] ? angular.extend(n[t], e[t]) : n[t] = angular.copy(e[t]));
					return n
				}(n, W[0]))) : W = n, r.$observe("uiMask", u), r.$observe("placeholder", o), i.$formatters.push(a), i.$parsers.push(l), t.bind("mousedown mouseup", y), Array.prototype.indexOf || (Array.prototype.indexOf = function(e) {
					if (null === this) throw new TypeError;
					var n = Object(this),
						t = n.length >>> 0;
					if (0 === t) return -1;
					var r = 0;
					if (arguments.length > 1 && (r = Number(arguments[1]), r !== r ? r = 0 : 0 !== r && 1 / 0 !== r && r !== -1 / 0 && (r = (r > 0 || -1) * Math.floor(Math.abs(r)))), r >= t) return -1;
					for (var i = r >= 0 ? r : Math.max(t - Math.abs(r), 0); t > i; i++) if (i in n && n[i] === e) return i;
					return -1
				})
			}
		}
	}
}]), angular.module("ui.reset", []).value("uiResetConfig", null).directive("uiReset", ["uiResetConfig", function(e) {
	var n = null;
	return void 0 !== e && (n = e), {
		require: "ngModel",
		link: function(e, t, r, i) {
			var u;
			u = angular.element('<a class="ui-reset" />'), t.wrap('<span class="ui-resetwrap" />').after(u), u.bind("click", function(t) {
				t.preventDefault(), e.$apply(function() {
					i.$setViewValue(r.uiReset ? e.$eval(r.uiReset) : n), i.$render()
				})
			})
		}
	}
}]), angular.module("ui.route", []).directive("uiRoute", ["$location", "$parse", function(e, n) {
	return {
		restrict: "AC",
		scope: !0,
		compile: function(t, r) {
			var i;
			if (r.uiRoute) i = "uiRoute";
			else if (r.ngHref) i = "ngHref";
			else {
				if (!r.href) throw new Error("uiRoute missing a route or href property on " + t[0]);
				i = "href"
			}
			return function(t, r, u) {
				function o(n) {
					var r = n.indexOf("#");
					r > -1 && (n = n.substr(r + 1)), (c = function() {
						l(t, e.path().indexOf(n) > -1)
					})()
				}
				function a(n) {
					var r = n.indexOf("#");
					r > -1 && (n = n.substr(r + 1)), (c = function() {
						var r = new RegExp("^" + n + "$", ["i"]);
						l(t, r.test(e.path()))
					})()
				}
				var l = n(u.ngModel || u.routeModel || "$uiRoute").assign,
					c = angular.noop;
				switch (i) {
					case "uiRoute":
						u.uiRoute ? a(u.uiRoute) : u.$observe("uiRoute", a);
						break;
					case "ngHref":
						u.ngHref ? o(u.ngHref) : u.$observe("ngHref", o);
						break;
					case "href":
						o(u.href)
				}
				t.$on("$routeChangeSuccess", function() {
					c()
				}), t.$on("$stateChangeSuccess", function() {
					c()
				})
			}
		}
	}
}]), angular.module("ui.scroll.jqlite", ["ui.scroll"]).service("jqLiteExtras", ["$log", "$window", function(e, n) {
	return {
		registerFor: function(e) {
			var t, r, i, u, o, a, l;
			return r = angular.element.prototype.css, e.prototype.css = function(e, n) {
				var t, i;
				return i = this, t = i[0], t && 3 !== t.nodeType && 8 !== t.nodeType && t.style ? r.call(i, e, n) : void 0
			}, a = function(e) {
				return e && e.document && e.location && e.alert && e.setInterval
			}, l = function(e, n, t) {
				var r, i, u, o, l;
				return r = e[0], l = {
					top: ["scrollTop", "pageYOffset", "scrollLeft"],
					left: ["scrollLeft", "pageXOffset", "scrollTop"]
				}[n], i = l[0], o = l[1], u = l[2], a(r) ? angular.isDefined(t) ? r.scrollTo(e[u].call(e), t) : o in r ? r[o] : r.document.documentElement[i] : angular.isDefined(t) ? r[i] = t : r[i]
			}, n.getComputedStyle ? (u = function(e) {
				return n.getComputedStyle(e, null)
			}, t = function(e, n) {
				return parseFloat(n)
			}) : (u = function(e) {
				return e.currentStyle
			}, t = function(e, n) {
				var t, r, i, u, o, a, l;
				return t = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, u = new RegExp("^(" + t + ")(?!px)[a-z%]+$", "i"), u.test(n) ? (l = e.style, r = l.left, o = e.runtimeStyle, a = o && o.left, o && (o.left = l.left), l.left = n, i = l.pixelLeft, l.left = r, a && (o.left = a), i) : parseFloat(n)
			}), i = function(e, n) {
				var r, i, o, l, c, s, f, d, g, p, h, m, v;
				return a(e) ? (r = document.documentElement[{
					height: "clientHeight",
					width: "clientWidth"
				}[n]], {
					base: r,
					padding: 0,
					border: 0,
					margin: 0
				}) : (v = {
					width: [e.offsetWidth, "Left", "Right"],
					height: [e.offsetHeight, "Top", "Bottom"]
				}[n], r = v[0], f = v[1], d = v[2], s = u(e), h = t(e, s["padding" + f]) || 0, m = t(e, s["padding" + d]) || 0, i = t(e, s["border" + f + "Width"]) || 0, o = t(e, s["border" + d + "Width"]) || 0, l = s["margin" + f], c = s["margin" + d], g = t(e, l) || 0, p = t(e, c) || 0, {
					base: r,
					padding: h + m,
					border: i + o,
					margin: g + p
				})
			}, o = function(e, n, t) {
				var r, o, a;
				return o = i(e, n), o.base > 0 ? {
					base: o.base - o.padding - o.border,
					outer: o.base,
					outerfull: o.base + o.margin
				}[t] : (r = u(e), a = r[n], (0 > a || null === a) && (a = e.style[n] || 0), a = parseFloat(a) || 0, {
					base: a - o.padding - o.border,
					outer: a,
					outerfull: a + o.padding + o.border + o.margin
				}[t])
			}, angular.forEach({
				before: function(e) {
					var n, t, r, i, u, o, a;
					if (u = this, t = u[0], i = u.parent(), n = i.contents(), n[0] === t) return i.prepend(e);
					for (r = o = 1, a = n.length - 1; a >= 1 ? a >= o : o >= a; r = a >= 1 ? ++o : --o) if (n[r] === t) return void angular.element(n[r - 1]).after(e);
					throw new Error("invalid DOM structure " + t.outerHTML)
				},
				height: function(e) {
					var n;
					return n = this, angular.isDefined(e) ? (angular.isNumber(e) && (e += "px"), r.call(n, "height", e)) : o(this[0], "height", "base")
				},
				outerHeight: function(e) {
					return o(this[0], "height", e ? "outerfull" : "outer")
				},
				offset: function(e) {
					var n, t, r, i, u, o;
					return u = this, arguments.length ? void 0 === e ? u : e : (n = {
						top: 0,
						left: 0
					}, i = u[0], (t = i && i.ownerDocument) ? (r = t.documentElement, i.getBoundingClientRect && (n = i.getBoundingClientRect()), o = t.defaultView || t.parentWindow, {
						top: n.top + (o.pageYOffset || r.scrollTop) - (r.clientTop || 0),
						left: n.left + (o.pageXOffset || r.scrollLeft) - (r.clientLeft || 0)
					}) : void 0)
				},
				scrollTop: function(e) {
					return l(this, "top", e)
				},
				scrollLeft: function(e) {
					return l(this, "left", e)
				}
			}, function(n, t) {
				return e.prototype[t] ? void 0 : e.prototype[t] = n
			})
		}
	}
}]).run(["$log", "$window", "jqLiteExtras", function(e, n, t) {
	return n.jQuery ? void 0 : t.registerFor(angular.element)
}]), angular.module("ui.scroll", []).directive("ngScrollViewport", ["$log", function() {
	return {
		controller: ["$scope", "$element", function(e, n) {
			return n
		}]
	}
}]).directive("ngScroll", ["$log", "$injector", "$rootScope", "$timeout", function(e, n, t, r) {
	return {
		require: ["?^ngScrollViewport"],
		transclude: "element",
		priority: 1e3,
		terminal: !0,
		compile: function(i, u, o) {
			return function(u, a, l, c) {
				var s, f, d, g, p, h, m, v, $, b, y, w, x, k, S, E, C, H, O, V, q, R, A, P, j, T, D, M, L, _, z, F, K, W, J, I;
				if (P = l.ngScroll.match(/^\s*(\w+)\s+in\s+(\w+)\s*$/), !P) throw new Error('Expected ngScroll in form of "item_ in _datasource_" but got "' + l.ngScroll + '"');
				if (R = P[1], w = P[2], V = function(e) {
					return angular.isObject(e) && e.get && angular.isFunction(e.get)
				}, y = u[w], !V(y) && (y = n.get(w), !V(y))) throw new Error(w + " is not a valid datasource");
				return v = Math.max(3, +l.bufferSize || 10), m = function() {
					return I.height() * Math.max(.1, +l.padding || .1)
				}, z = function(e) {
					return e[0].scrollHeight || e[0].document.documentElement.scrollHeight
				}, s = null, o(W = u.$new(), function(e) {
					var n, t, r, u, o, a;
					if (u = e[0].localName, "dl" === u) throw new Error("ng-scroll directive does not support <" + e[0].localName + "> as a repeating tag: " + e[0].outerHTML);
					return "li" !== u && "tr" !== u && (u = "div"), a = c[0] || angular.element(window), a.css({
						"overflow-y": "auto",
						display: "block"
					}), r = function(e) {
						var n, t, r;
						switch (e) {
							case "tr":
								return r = angular.element("<table><tr><td><div></div></td></tr></table>"), n = r.find("div"), t = r.find("tr"), t.paddingHeight = function() {
									return n.height.apply(n, arguments)
								}, t;
							default:
								return t = angular.element("<" + e + "></" + e + ">"), t.paddingHeight = t.height, t
						}
					}, t = function(e, n, t) {
						return n[{
							top: "before",
							bottom: "after"
						}[t]](e), {
							paddingHeight: function() {
								return e.paddingHeight.apply(e, arguments)
							},
							insert: function(n) {
								return e[{
									top: "after",
									bottom: "before"
								}[t]](n)
							}
						}
					}, o = t(r(u), i, "top"), n = t(r(u), i, "bottom"), W.$destroy(), s = {
						viewport: a,
						topPadding: o.paddingHeight,
						bottomPadding: n.paddingHeight,
						append: n.insert,
						prepend: o.insert,
						bottomDataPos: function() {
							return z(a) - n.paddingHeight()
						},
						topDataPos: function() {
							return o.paddingHeight()
						}
					}
				}), I = s.viewport, H = 1, j = 1, h = [], T = [], k = !1, g = !1, A = y.loading || function() {}, q = !1, M = function(e, n) {
					var t, r;
					for (t = r = e; n >= e ? n > r : r > n; t = n >= e ? ++r : --r) h[t].scope.$destroy(), h[t].element.remove();
					return h.splice(e, n - e)
				}, D = function() {
					return H = 1, j = 1, M(0, h.length), s.topPadding(0), s.bottomPadding(0), T = [], k = !1, g = !1, f(!1)
				}, p = function() {
					return I.scrollTop() + I.height()
				}, J = function() {
					return I.scrollTop()
				}, F = function() {
					return !k && s.bottomDataPos() < p() + m()
				}, $ = function() {
					var n, t, r, i, u, o;
					for (n = 0, i = 0, t = u = o = h.length - 1;
					(0 >= o ? 0 >= u : u >= 0) && (r = h[t].element.outerHeight(!0), s.bottomDataPos() - n - r > p() + m()); t = 0 >= o ? ++u : --u) n += r, i++, k = !1;
					return i > 0 ? (s.bottomPadding(s.bottomPadding() + n), M(h.length - i, h.length), j -= i, e.log("clipped off bottom " + i + " bottom padding " + s.bottomPadding())) : void 0
				}, K = function() {
					return !g && s.topDataPos() > J() - m()
				}, b = function() {
					var n, t, r, i, u, o;
					for (i = 0, r = 0, u = 0, o = h.length; o > u && (n = h[u], t = n.element.outerHeight(!0), s.topDataPos() + i + t < J() - m()); u++) i += t, r++, g = !1;
					return r > 0 ? (s.topPadding(s.topPadding() + i), M(0, r), H += r, e.log("clipped off top " + r + " top padding " + s.topPadding())) : void 0
				}, x = function(e, n) {
					return q || (q = !0, A(!0)), 1 === T.push(e) ? E(n) : void 0
				}, O = function(e, n) {
					var t, r, i;
					return t = u.$new(), t[R] = n, r = e > H, t.$index = e, r && t.$index--, i = {
						scope: t
					}, o(t, function(n) {
						return i.element = n, r ? e === j ? (s.append(n), h.push(i)) : (h[e - H].element.after(n), h.splice(e - H + 1, 0, i)) : (s.prepend(n), h.unshift(i))
					}), {
						appended: r,
						wrapper: i
					}
				}, d = function(e, n) {
					var t;
					return e ? s.bottomPadding(Math.max(0, s.bottomPadding() - n.element.outerHeight(!0))) : (t = s.topPadding() - n.element.outerHeight(!0), t >= 0 ? s.topPadding(t) : I.scrollTop(I.scrollTop() + n.element.outerHeight(!0)))
				}, f = function(n, t, i) {
					var u;
					return u = function() {
						return e.log("top {actual=" + s.topDataPos() + " visible from=" + J() + " bottom {visible through=" + p() + " actual=" + s.bottomDataPos() + "}"), F() ? x(!0, n) : K() && x(!1, n), i ? i() : void 0
					}, t ? r(function() {
						var e, n, r;
						for (n = 0, r = t.length; r > n; n++) e = t[n], d(e.appended, e.wrapper);
						return u()
					}) : u()
				}, C = function(e, n) {
					return f(e, n, function() {
						return T.shift(), 0 === T.length ? (q = !1, A(!1)) : E(e)
					})
				}, E = function(n) {
					var t;
					return t = T[0], t ? h.length && !F() ? C(n) : y.get(j, v, function(t) {
						var r, i, u, o;
						if (i = [], 0 === t.length) k = !0, s.bottomPadding(0), e.log("appended: requested " + v + " records starting from " + j + " recieved: eof");
						else {
							for (b(), u = 0, o = t.length; o > u; u++) r = t[u], i.push(O(++j, r));
							e.log("appended: requested " + v + " received " + t.length + " buffer size " + h.length + " first " + H + " next " + j)
						}
						return C(n, i)
					}) : h.length && !K() ? C(n) : y.get(H - v, v, function(t) {
						var r, i, u, o;
						if (i = [], 0 === t.length) g = !0, s.topPadding(0), e.log("prepended: requested " + v + " records starting from " + (H - v) + " recieved: bof");
						else {
							for ($(), r = u = o = t.length - 1; 0 >= o ? 0 >= u : u >= 0; r = 0 >= o ? ++u : --u) i.unshift(O(--H, t[r]));
							e.log("prepended: requested " + v + " received " + t.length + " buffer size " + h.length + " first " + H + " next " + j)
						}
						return C(n, i)
					})
				}, L = function() {
					return t.$$phase || q ? void 0 : (f(!1), u.$apply())
				}, I.bind("resize", L), _ = function() {
					return t.$$phase || q ? void 0 : (f(!0), u.$apply())
				}, I.bind("scroll", _), u.$watch(y.revision, function() {
					return D()
				}), S = y.scope ? y.scope.$new() : u.$new(), u.$on("$destroy", function() {
					return S.$destroy(), I.unbind("resize", L), I.unbind("scroll", _)
				}), S.$on("update.items", function(e, n, t) {
					var r, i, u, o, a;
					if (angular.isFunction(n)) for (i = function(e) {
						return n(e.scope)
					}, u = 0, o = h.length; o > u; u++) r = h[u], i(r);
					else 0 <= (a = n - H - 1) && a < h.length && (h[n - H - 1].scope[R] = t);
					return null
				}), S.$on("delete.items", function(e, n) {
					var t, r, i, u, o, a, l, c, s, d, g, p;
					if (angular.isFunction(n)) {
						for (i = [], a = 0, s = h.length; s > a; a++) r = h[a], i.unshift(r);
						for (o = function(e) {
							return n(e.scope) ? (M(i.length - 1 - t, i.length - t), j--) : void 0
						}, t = l = 0, d = i.length; d > l; t = ++l) u = i[t], o(u)
					} else 0 <= (p = n - H - 1) && p < h.length && (M(n - H - 1, n - H), j--);
					for (t = c = 0, g = h.length; g > c; t = ++c) r = h[t], r.scope.$index = H + t;
					return f(!1)
				}), S.$on("insert.item", function(e, n, t) {
					var r, i, u, o, a, l, c, s, d, g, p, m;
					if (i = [], angular.isFunction(n)) {
						for (u = [], l = 0, d = h.length; d > l; l++) t = h[l], u.unshift(t);
						for (a = function(e) {
							var u, o, a, l, c;
							if (o = n(e.scope)) {
								if (O = function(e, n) {
									return O(e, n), j++
								}, angular.isArray(o)) {
									for (c = [], u = a = 0, l = o.length; l > a; u = ++a) t = o[u], c.push(i.push(O(r + u, t)));
									return c
								}
								return i.push(O(r, o))
							}
						}, r = c = 0, g = u.length; g > c; r = ++c) o = u[r], a(o)
					} else 0 <= (m = n - H - 1) && m < h.length && (i.push(O(n, t)), j++);
					for (r = s = 0, p = h.length; p > s; r = ++s) t = h[r], t.scope.$index = H + r;
					return f(!1, i)
				})
			}
		}
	}
}]), angular.module("ui.scrollfix", []).directive("uiScrollfix", ["$window", function(e) {
	return {
		require: "^?uiScrollfixTarget",
		link: function(n, t, r, i) {
			function u() {
				var n;
				if (angular.isDefined(e.pageYOffset)) n = e.pageYOffset;
				else {
					var i = document.compatMode && "BackCompat" !== document.compatMode ? document.documentElement : document.body;
					n = i.scrollTop
				}!t.hasClass("ui-scrollfix") && n > r.uiScrollfix ? t.addClass("ui-scrollfix") : t.hasClass("ui-scrollfix") && n < r.uiScrollfix && t.removeClass("ui-scrollfix")
			}
			var o = t[0].offsetTop,
				a = i && i.$element || angular.element(e);
			r.uiScrollfix ? "string" == typeof r.uiScrollfix && ("-" === r.uiScrollfix.charAt(0) ? r.uiScrollfix = o - parseFloat(r.uiScrollfix.substr(1)) : "+" === r.uiScrollfix.charAt(0) && (r.uiScrollfix = o + parseFloat(r.uiScrollfix.substr(1)))) : r.uiScrollfix = o, a.on("scroll", u), n.$on("$destroy", function() {
				a.off("scroll", u)
			})
		}
	}
}]).directive("uiScrollfixTarget", [function() {
	return {
		controller: ["$element", function(e) {
			this.$element = e
		}]
	}
}]), angular.module("ui.showhide", []).directive("uiShow", [function() {
	return function(e, n, t) {
		e.$watch(t.uiShow, function(e) {
			e ? n.addClass("ui-show") : n.removeClass("ui-show")
		})
	}
}]).directive("uiHide", [function() {
	return function(e, n, t) {
		e.$watch(t.uiHide, function(e) {
			e ? n.addClass("ui-hide") : n.removeClass("ui-hide")
		})
	}
}]).directive("uiToggle", [function() {
	return function(e, n, t) {
		e.$watch(t.uiToggle, function(e) {
			e ? n.removeClass("ui-hide").addClass("ui-show") : n.removeClass("ui-show").addClass("ui-hide")
		})
	}
}]), angular.module("ui.unique", []).filter("unique", ["$parse", function(e) {
	return function(n, t) {
		if (t === !1) return n;
		if ((t || angular.isUndefined(t)) && angular.isArray(n)) {
			var r = [],
				i = angular.isString(t) ? e(t) : function(e) {
					return e
				}, u = function(e) {
					return angular.isObject(e) ? i(e) : e
				};
			angular.forEach(n, function(e) {
				for (var n = !1, t = 0; t < r.length; t++) if (angular.equals(u(r[t]), u(e))) {
					n = !0;
					break
				}
				n || r.push(e)
			}), n = r
		}
		return n
	}
}]), angular.module("ui.validate", []).directive("uiValidate", function() {
	return {
		restrict: "A",
		require: "ngModel",
		link: function(e, n, t, r) {
			function i(n) {
				return angular.isString(n) ? void e.$watch(n, function() {
					angular.forEach(o, function(e) {
						e(r.$modelValue)
					})
				}) : angular.isArray(n) ? void angular.forEach(n, function(n) {
					e.$watch(n, function() {
						angular.forEach(o, function(e) {
							e(r.$modelValue)
						})
					})
				}) : void(angular.isObject(n) && angular.forEach(n, function(n, t) {
					angular.isString(n) && e.$watch(n, function() {
						o[t](r.$modelValue)
					}), angular.isArray(n) && angular.forEach(n, function(n) {
						e.$watch(n, function() {
							o[t](r.$modelValue)
						})
					})
				}))
			}
			var u, o = {}, a = e.$eval(t.uiValidate);
			a && (angular.isString(a) && (a = {
				validator: a
			}), angular.forEach(a, function(n, t) {
				u = function(i) {
					var u = e.$eval(n, {
						$value: i
					});
					return angular.isObject(u) && angular.isFunction(u.then) ? (u.then(function() {
						r.$setValidity(t, !0)
					}, function() {
						r.$setValidity(t, !1)
					}), i) : u ? (r.$setValidity(t, !0), i) : (r.$setValidity(t, !1), i)
				}, o[t] = u, r.$formatters.push(u), r.$parsers.push(u)
			}), t.uiValidateWatch && i(e.$eval(t.uiValidateWatch)))
		}
	}
}), angular.module("ui.utils", ["ui.event", "ui.format", "ui.highlight", "ui.include", "ui.indeterminate", "ui.inflector", "ui.jq", "ui.keypress", "ui.mask", "ui.reset", "ui.route", "ui.scrollfix", "ui.scroll", "ui.scroll.jqlite", "ui.showhide", "ui.unique", "ui.validate"]);
! function(e, t) {
	"use strict";

	function r() {
		this.$get = ["$$sanitizeUri", function(e) {
			return function(t) {
				var r = [];
				return s(t, c(r, function(t, r) {
					return !/^unsafe/.test(e(t, r))
				})), r.join("")
			}
		}]
	}
	function n(e) {
		var r = [],
			n = c(r, t.noop);
		return n.chars(e), r.join("")
	}
	function a(e) {
		var t, r = {}, n = e.split(",");
		for (t = 0; t < n.length; t++) r[n[t]] = !0;
		return r
	}
	function s(e, r) {
		function n(e, n, s, o) {
			if (n = t.lowercase(n), k[n]) for (; w.last() && C[w.last()];) a("", w.last());
			y[n] && w.last() == n && a("", n), o = x[n] || !! o, o || w.push(n);
			var c = {};
			s.replace(f, function(e, t, r, n, a) {
				var s = r || n || a || "";
				c[t] = i(s)
			}), r.start && r.start(n, c, o)
		}
		function a(e, n) {
			var a, s = 0;
			if (n = t.lowercase(n)) for (s = w.length - 1; s >= 0 && w[s] != n; s--);
			if (s >= 0) {
				for (a = w.length - 1; a >= s; a--) r.end && r.end(w[a]);
				w.length = s
			}
		}
		"string" != typeof e && (e = null === e || "undefined" == typeof e ? "" : "" + e);
		var s, o, c, v, w = [],
			$ = e;
		for (w.last = function() {
			return w[w.length - 1]
		}; e;) {
			if (v = "", o = !0, w.last() && A[w.last()] ? (e = e.replace(new RegExp("(.*)<\\s*\\/\\s*" + w.last() + "[^>]*>", "i"), function(e, t) {
				return t = t.replace(d, "$1").replace(m, "$1"), r.chars && r.chars(i(t)), ""
			}), a("", w.last())) : (0 === e.indexOf("<!--") ? (s = e.indexOf("--", 4), s >= 0 && e.lastIndexOf("-->", s) === s && (r.comment && r.comment(e.substring(4, s)), e = e.substring(s + 3), o = !1)) : b.test(e) ? (c = e.match(b), c && (e = e.replace(c[0], ""), o = !1)) : g.test(e) ? (c = e.match(p), c && (e = e.substring(c[0].length), c[0].replace(p, a), o = !1)) : h.test(e) && (c = e.match(u), c ? (c[4] && (e = e.substring(c[0].length), c[0].replace(u, n)), o = !1) : (v += "<", e = e.substring(1))), o && (s = e.indexOf("<"), v += 0 > s ? e : e.substring(0, s), e = 0 > s ? "" : e.substring(s), r.chars && r.chars(i(v)))), e == $) throw l("badparse", "The sanitizer was unable to parse the following block of html: {0}", e);
			$ = e
		}
		a()
	}
	function i(e) {
		if (!e) return "";
		var t = T.exec(e),
			r = t[1],
			n = t[3],
			a = t[2];
		return a && (O.innerHTML = a.replace(/</g, "&lt;"), a = "textContent" in O ? O.textContent : O.innerText), r + a + n
	}
	function o(e) {
		return e.replace(/&/g, "&amp;").replace(v, function(e) {
			var t = e.charCodeAt(0),
				r = e.charCodeAt(1);
			return "&#" + (1024 * (t - 55296) + (r - 56320) + 65536) + ";"
		}).replace(w, function(e) {
			return "&#" + e.charCodeAt(0) + ";"
		}).replace(/</g, "&lt;").replace(/>/g, "&gt;")
	}
	function c(e, r) {
		var n = !1,
			a = t.bind(e, e.push);
		return {
			start: function(e, s, i) {
				e = t.lowercase(e), !n && A[e] && (n = e), n || D[e] !== !0 || (a("<"), a(e), t.forEach(s, function(n, s) {
					var i = t.lowercase(s),
						c = "img" === e && "src" === i || "background" === i;
					F[i] !== !0 || E[i] === !0 && !r(n, c) || (a(" "), a(s), a('="'), a(o(n)), a('"'))
				}), a(i ? "/>" : ">"))
			},
			end: function(e) {
				e = t.lowercase(e), n || D[e] !== !0 || (a("</"), a(e), a(">")), e == n && (n = !1)
			},
			chars: function(e) {
				n || a(o(e))
			}
		}
	}
	var l = t.$$minErr("$sanitize"),
		u = /^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,
		p = /^<\/\s*([\w:-]+)[^>]*>/,
		f = /([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,
		h = /^</,
		g = /^<\//,
		d = /<!--(.*?)-->/g,
		b = /<!DOCTYPE([^>]*?)>/i,
		m = /<!\[CDATA\[(.*?)]]>/g,
		v = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
		w = /([^\#-~| |!])/g,
		x = a("area,br,col,hr,img,wbr"),
		$ = a("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
		z = a("rp,rt"),
		y = t.extend({}, z, $),
		k = t.extend({}, $, a("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),
		C = t.extend({}, z, a("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),
		A = a("script,style"),
		D = t.extend({}, x, k, C, y),
		E = a("background,cite,href,longdesc,src,usemap"),
		F = t.extend({}, E, a("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,type,valign,value,vspace,width")),
		O = document.createElement("pre"),
		T = /^(\s*)([\s\S]*?)(\s*)$/;
	t.module("ngSanitize", []).provider("$sanitize", r), t.module("ngSanitize").filter("linky", ["$sanitize", function(e) {
		var r = /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"]/,
			a = /^mailto:/;
		return function(s, i) {
			function o(e) {
				e && h.push(n(e))
			}
			function c(e, r) {
				h.push("<a "), t.isDefined(i) && (h.push('target="'), h.push(i), h.push('" ')), h.push('href="', e.replace('"', "&quot;"), '">'), o(r), h.push("</a>")
			}
			if (!s) return s;
			for (var l, u, p, f = s, h = []; l = f.match(r);) u = l[0], l[2] == l[3] && (u = "mailto:" + u), p = l.index, o(f.substr(0, p)), c(u, l[0].replace(a, "")), f = f.substring(p + l[0].length);
			return o(f), e(h.join(""))
		}
	}])
}(window, window.angular);
! function(r, e, t) {
	"use strict";

	function n(r) {
		return null != r && "" !== r && "hasOwnProperty" !== r && s.test("." + r)
	}
	function a(r, e) {
		if (!n(e)) throw i("badmember", 'Dotted member path "@{0}" is invalid.', e);
		for (var a = e.split("."), o = 0, s = a.length; s > o && r !== t; o++) {
			var c = a[o];
			r = null !== r ? r[c] : t
		}
		return r
	}
	function o(r, t) {
		t = t || {}, e.forEach(t, function(r, e) {
			delete t[e]
		});
		for (var n in r)!r.hasOwnProperty(n) || "$" === n.charAt(0) && "$" === n.charAt(1) || (t[n] = r[n]);
		return t
	}
	var i = e.$$minErr("$resource"),
		s = /^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;
	e.module("ngResource", ["ng"]).factory("$resource", ["$http", "$q", function(r, n) {
		function s(r) {
			return c(r, !0).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+")
		}
		function c(r, e) {
			return encodeURIComponent(r).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, e ? "%20" : "+")
		}
		function u(r, e) {
			this.template = r, this.defaults = e || {}, this.urlParams = {}
		}
		function p(s, c, $) {
			function v(r, e) {
				var t = {};
				return e = m({}, c, e), h(e, function(e, n) {
					g(e) && (e = e()), t[n] = e && e.charAt && "@" == e.charAt(0) ? a(r, e.substr(1)) : e
				}), t
			}
			function w(r) {
				return r.resource
			}
			function y(r) {
				o(r || {}, this)
			}
			var E = new u(s);
			return $ = m({}, l, $), h($, function(a, s) {
				var c = /^(POST|PUT|PATCH)$/i.test(a.method);
				y[s] = function(s, u, p, l) {
					var $, A, b, P = {};
					switch (arguments.length) {
						case 4:
							b = l, A = p;
						case 3:
						case 2:
							if (!g(u)) {
								P = s, $ = u, A = p;
								break
							}
							if (g(s)) {
								A = s, b = u;
								break
							}
							A = u, b = p;
						case 1:
							g(s) ? A = s : c ? $ = s : P = s;
							break;
						case 0:
							break;
						default:
							throw i("badargs", "Expected up to 4 arguments [params, data, success, error], got {0} arguments", arguments.length)
					}
					var T = this instanceof y,
						x = T ? $ : a.isArray ? [] : new y($),
						O = {}, R = a.interceptor && a.interceptor.response || w,
						D = a.interceptor && a.interceptor.responseError || t;
					h(a, function(r, e) {
						"params" != e && "isArray" != e && "interceptor" != e && (O[e] = d(r))
					}), c && (O.data = $), E.setUrlParams(O, m({}, v($, a.params || {}), P), a.url);
					var j = r(O).then(function(r) {
						var t = r.data,
							n = x.$promise;
						if (t) {
							if (e.isArray(t) !== !! a.isArray) throw i("badcfg", "Error in resource configuration. Expected response to contain an {0} but got an {1}", a.isArray ? "array" : "object", e.isArray(t) ? "array" : "object");
							a.isArray ? (x.length = 0, h(t, function(r) {
								x.push("object" == typeof r ? new y(r) : r)
							})) : (o(t, x), x.$promise = n)
						}
						return x.$resolved = !0, r.resource = x, r
					}, function(r) {
						return x.$resolved = !0, (b || f)(r), n.reject(r)
					});
					return j = j.then(function(r) {
						var e = R(r);
						return (A || f)(e, r.headers), e
					}, D), T ? j : (x.$promise = j, x.$resolved = !1, x)
				}, y.prototype["$" + s] = function(r, e, t) {
					g(r) && (t = e, e = r, r = {});
					var n = y[s].call(this, r, this, e, t);
					return n.$promise || n
				}
			}), y.bind = function(r) {
				return p(s, m({}, c, r), $)
			}, y
		}
		var l = {
			get: {
				method: "GET"
			},
			save: {
				method: "POST"
			},
			query: {
				method: "GET",
				isArray: !0
			},
			remove: {
				method: "DELETE"
			},
			"delete": {
				method: "DELETE"
			}
		}, f = e.noop,
			h = e.forEach,
			m = e.extend,
			d = e.copy,
			g = e.isFunction;
		return u.prototype = {
			setUrlParams: function(r, t, n) {
				var a, o, c = this,
					u = n || c.template,
					p = c.urlParams = {};
				h(u.split(/\W/), function(r) {
					if ("hasOwnProperty" === r) throw i("badname", "hasOwnProperty is not a valid parameter name.");
					!new RegExp("^\\d+$").test(r) && r && new RegExp("(^|[^\\\\]):" + r + "(\\W|$)").test(u) && (p[r] = !0)
				}), u = u.replace(/\\:/g, ":"), t = t || {}, h(c.urlParams, function(r, n) {
					a = t.hasOwnProperty(n) ? t[n] : c.defaults[n], e.isDefined(a) && null !== a ? (o = s(a), u = u.replace(new RegExp(":" + n + "(\\W|$)", "g"), function(r, e) {
						return o + e
					})) : u = u.replace(new RegExp("(/?):" + n + "(\\W|$)", "g"), function(r, e, t) {
						return "/" == t.charAt(0) ? t : e + t
					})
				}), u = u.replace(/\/+$/, "") || "/", u = u.replace(/\/\.(?=\w+($|\?))/, "."), r.url = u.replace(/\/\\\./, "/."), h(t, function(e, t) {
					c.urlParams[t] || (r.params = r.params || {}, r.params[t] = e)
				})
			}
		}, p
	}])
}(window, window.angular);
angular.module("pascalprecht.translate", ["ng"]).run(["$translate", function(t) {
	var e = t.storageKey(),
		n = t.storage();
	n ? n.get(e) ? t.use(n.get(e)) : angular.isString(t.preferredLanguage()) ? t.use(t.preferredLanguage()) : n.set(e, t.use()) : angular.isString(t.preferredLanguage()) && t.use(t.preferredLanguage())
}]), angular.module("pascalprecht.translate").provider("$translate", ["$STORAGE_KEY", function(t) {
	var e, n, r, a, o, i, u, s, l, c, f, g, h, p, d, v = {}, $ = [],
		m = t,
		y = [],
		L = !1,
		b = "translate-cloak",
		S = !1,
		j = ".",
		w = "2.4.2",
		C = function() {
			var t = window.navigator;
			return ((angular.isArray(t.languages) ? t.languages[0] : t.language || t.browserLanguage || t.systemLanguage || t.userLanguage) || "").split("-").join("_")
		}, k = function(t, e) {
			for (var n = 0, r = t.length; r > n; n++) if (t[n] === e) return n;
			return -1
		}, I = function() {
			return this.replace(/^\s+|\s+$/g, "")
		}, E = function(t) {
			for (var e = [], r = angular.lowercase(t), a = 0, o = $.length; o > a; a++) e.push(angular.lowercase($[a]));
			if (k(e, r) > -1) return t;
			if (n) {
				var i;
				for (var u in n) {
					var s = !1,
						l = Object.prototype.hasOwnProperty.call(n, u) && angular.lowercase(u) === angular.lowercase(t);
					if ("*" === u.slice(-1) && (s = u.slice(0, -1) === t.slice(0, u.length - 1)), (l || s) && (i = n[u], k(e, angular.lowercase(i)) > -1)) return i
				}
			}
			var c = t.split("_");
			return c.length > 1 && k(e, angular.lowercase(c[0])) > -1 ? c[0] : t
		}, O = function(t, e) {
			if (!t && !e) return v;
			if (t && !e) {
				if (angular.isString(t)) return v[t]
			} else angular.isObject(v[t]) || (v[t] = {}), angular.extend(v[t], P(e));
			return this
		};
	this.translations = O, this.cloakClassName = function(t) {
		return t ? (b = t, this) : b
	};
	var P = function(t, e, n, r) {
		var a, o, i, u;
		e || (e = []), n || (n = {});
		for (a in t) Object.prototype.hasOwnProperty.call(t, a) && (u = t[a], angular.isObject(u) ? P(u, e.concat(a), n, a) : (o = e.length ? "" + e.join(j) + j + a : a, e.length && a === r && (i = "" + e.join(j), n[i] = "@:" + o), n[o] = u));
		return n
	};
	this.addInterpolation = function(t) {
		return y.push(t), this
	}, this.useMessageFormatInterpolation = function() {
		return this.useInterpolation("$translateMessageFormatInterpolation")
	}, this.useInterpolation = function(t) {
		return c = t, this
	}, this.useSanitizeValueStrategy = function(t) {
		return L = t, this
	}, this.preferredLanguage = function(t) {
		return x(t), this
	};
	var x = function(t) {
		return t && (e = t), e
	};
	this.translationNotFoundIndicator = function(t) {
		return this.translationNotFoundIndicatorLeft(t), this.translationNotFoundIndicatorRight(t), this
	}, this.translationNotFoundIndicatorLeft = function(t) {
		return t ? (h = t, this) : h
	}, this.translationNotFoundIndicatorRight = function(t) {
		return t ? (p = t, this) : p
	}, this.fallbackLanguage = function(t) {
		return T(t), this
	};
	var T = function(t) {
		return t ? (angular.isString(t) ? (a = !0, r = [t]) : angular.isArray(t) && (a = !1, r = t), angular.isString(e) && k(r, e) < 0 && r.push(e), this) : a ? r[0] : r
	};
	this.use = function(t) {
		if (t) {
			if (!v[t] && !f) throw new Error("$translateProvider couldn't find translationTable for langKey: '" + t + "'");
			return o = t, this
		}
		return o
	};
	var F = function(t) {
		return t ? void(m = t) : s ? s + m : m
	};
	this.storageKey = F, this.useUrlLoader = function(t, e) {
		return this.useLoader("$translateUrlLoader", angular.extend({
			url: t
		}, e))
	}, this.useStaticFilesLoader = function(t) {
		return this.useLoader("$translateStaticFilesLoader", t)
	}, this.useLoader = function(t, e) {
		return f = t, g = e || {}, this
	}, this.useLocalStorage = function() {
		return this.useStorage("$translateLocalStorage")
	}, this.useCookieStorage = function() {
		return this.useStorage("$translateCookieStorage")
	}, this.useStorage = function(t) {
		return u = t, this
	}, this.storagePrefix = function(t) {
		return t ? (s = t, this) : t
	}, this.useMissingTranslationHandlerLog = function() {
		return this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")
	}, this.useMissingTranslationHandler = function(t) {
		return l = t, this
	}, this.usePostCompiling = function(t) {
		return S = !! t, this
	}, this.determinePreferredLanguage = function(t) {
		var n = t && angular.isFunction(t) ? t() : C();
		return e = $.length ? E(n) : n, this
	}, this.registerAvailableLanguageKeys = function(t, e) {
		return t ? ($ = t, e && (n = e), this) : $
	}, this.useLoaderCache = function(t) {
		return t === !1 ? d = void 0 : t === !0 ? d = !0 : "undefined" == typeof t ? d = "$translationCache" : t && (d = t), this
	}, this.$get = ["$log", "$injector", "$rootScope", "$q", function(t, n, s, $) {
		var j, C, A, N = n.get(c || "$translateDefaultInterpolation"),
			V = !1,
			K = {}, R = {}, M = function(t, n, a) {
				if (angular.isArray(t)) {
					var i = function(t) {
						for (var e = {}, r = [], o = function(t) {
							var r = $.defer(),
								o = function(n) {
									e[t] = n, r.resolve([t, n])
								};
							return M(t, n, a).then(o, o), r.promise
						}, i = 0, u = t.length; u > i; i++) r.push(o(t[i]));
						return $.all(r).then(function() {
							return e
						})
					};
					return i(t)
				}
				var s = $.defer();
				t && (t = I.apply(t));
				var l = function() {
					var t = e ? R[e] : R[o];
					if (C = 0, u && !t) {
						var n = j.get(m);
						if (t = R[n], r && r.length) {
							var a = k(r, n);
							C = 0 === a ? 1 : 0, k(r, e) < 0 && r.push(e)
						}
					}
					return t
				}();
				return l ? l.then(function() {
					W(t, n, a).then(s.resolve, s.reject)
				}, s.reject) : W(t, n, a).then(s.resolve, s.reject), s.promise
			}, _ = function(t) {
				return h && (t = [h, t].join(" ")), p && (t = [t, p].join(" ")), t
			}, z = function(t) {
				o = t, s.$emit("$translateChangeSuccess", {
					language: t
				}), u && j.set(M.storageKey(), o), N.setLocale(o), angular.forEach(K, function(t, e) {
					K[e].setLocale(o)
				}), s.$emit("$translateChangeEnd", {
					language: t
				})
			}, H = function(t) {
				if (!t) throw "No language key specified for loading.";
				var e = $.defer();
				s.$emit("$translateLoadingStart", {
					language: t
				}), V = !0;
				var r = d;
				"string" == typeof r && (r = n.get(r));
				var a = angular.extend({}, g, {
					key: t,
					$http: angular.extend({}, {
						cache: r
					}, g.$http)
				});
				return n.get(f)(a).then(function(n) {
					var r = {};
					s.$emit("$translateLoadingSuccess", {
						language: t
					}), angular.isArray(n) ? angular.forEach(n, function(t) {
						angular.extend(r, P(t))
					}) : angular.extend(r, P(n)), V = !1, e.resolve({
						key: t,
						table: r
					}), s.$emit("$translateLoadingEnd", {
						language: t
					})
				}, function(t) {
					s.$emit("$translateLoadingError", {
						language: t
					}), e.reject(t), s.$emit("$translateLoadingEnd", {
						language: t
					})
				}), e.promise
			};
		if (u && (j = n.get(u), !j.get || !j.set)) throw new Error("Couldn't use storage '" + u + "', missing get() or set() method!");
		angular.isFunction(N.useSanitizeValueStrategy) && N.useSanitizeValueStrategy(L), y.length && angular.forEach(y, function(t) {
			var r = n.get(t);
			r.setLocale(e || o), angular.isFunction(r.useSanitizeValueStrategy) && r.useSanitizeValueStrategy(L), K[r.getInterpolationIdentifier()] = r
		});
		var q = function(t) {
			var e = $.defer();
			return Object.prototype.hasOwnProperty.call(v, t) ? e.resolve(v[t]) : R[t] ? R[t].then(function(t) {
				O(t.key, t.table), e.resolve(t.table)
			}, e.reject) : e.reject(), e.promise
		}, D = function(t, e, n, r) {
			var a = $.defer();
			return q(t).then(function(i) {
				Object.prototype.hasOwnProperty.call(i, e) ? (r.setLocale(t), a.resolve(r.interpolate(i[e], n)), r.setLocale(o)) : a.reject()
			}, a.reject), a.promise
		}, G = function(t, e, n, r) {
			var a, i = v[t];
			return Object.prototype.hasOwnProperty.call(i, e) && (r.setLocale(t), a = r.interpolate(i[e], n), r.setLocale(o)), a
		}, U = function(t) {
			if (l) {
				var e = n.get(l)(t, o);
				return void 0 !== e ? e : t
			}
			return t
		}, Y = function(t, e, n, a) {
			var o = $.defer();
			if (t < r.length) {
				var i = r[t];
				D(i, e, n, a).then(o.resolve, function() {
					Y(t + 1, e, n, a).then(o.resolve)
				})
			} else o.resolve(U(e));
			return o.promise
		}, B = function(t, e, n, a) {
			var o;
			if (t < r.length) {
				var i = r[t];
				o = G(i, e, n, a), o || (o = B(t + 1, e, n, a))
			}
			return o
		}, J = function(t, e, n) {
			return Y(A > 0 ? A : C, t, e, n)
		}, Q = function(t, e, n) {
			return B(A > 0 ? A : C, t, e, n)
		}, W = function(t, e, n) {
			var a = $.defer(),
				i = o ? v[o] : v,
				u = n ? K[n] : N;
			if (i && Object.prototype.hasOwnProperty.call(i, t)) {
				var s = i[t];
				"@:" === s.substr(0, 2) ? M(s.substr(2), e, n).then(a.resolve, a.reject) : a.resolve(u.interpolate(s, e))
			} else {
				var c;
				l && !V && (c = U(t)), o && r && r.length ? J(t, e, u).then(function(t) {
					a.resolve(t)
				}, function(t) {
					a.reject(_(t))
				}) : l && !V && c ? a.resolve(c) : a.reject(_(t))
			}
			return a.promise
		}, X = function(t, e, n) {
			var a, i = o ? v[o] : v,
				u = n ? K[n] : N;
			if (i && Object.prototype.hasOwnProperty.call(i, t)) {
				var s = i[t];
				a = "@:" === s.substr(0, 2) ? X(s.substr(2), e, n) : u.interpolate(s, e)
			} else {
				var c;
				l && !V && (c = U(t)), o && r && r.length ? (C = 0, a = Q(t, e, u)) : a = l && !V && c ? c : _(t)
			}
			return a
		};
		if (M.preferredLanguage = function(t) {
			return t && x(t), e
		}, M.cloakClassName = function() {
			return b
		}, M.fallbackLanguage = function(t) {
			if (void 0 !== t && null !== t) {
				if (T(t), f && r && r.length) for (var e = 0, n = r.length; n > e; e++) R[r[e]] || (R[r[e]] = H(r[e]));
				M.use(M.use())
			}
			return a ? r[0] : r
		}, M.useFallbackLanguage = function(t) {
			if (void 0 !== t && null !== t) if (t) {
				var e = k(r, t);
				e > -1 && (A = e)
			} else A = 0
		}, M.proposedLanguage = function() {
			return i
		}, M.storage = function() {
			return j
		}, M.use = function(t) {
			if (!t) return o;
			var e = $.defer();
			s.$emit("$translateChangeStart", {
				language: t
			});
			var n = E(t);
			return n && (t = n), v[t] || !f || R[t] ? (e.resolve(t), z(t)) : (i = t, R[t] = H(t).then(function(n) {
				O(n.key, n.table), e.resolve(n.key), z(n.key), i === t && (i = void 0)
			}, function(t) {
				i === t && (i = void 0), s.$emit("$translateChangeError", {
					language: t
				}), e.reject(t), s.$emit("$translateChangeEnd", {
					language: t
				})
			})), e.promise
		}, M.storageKey = function() {
			return F()
		}, M.isPostCompilingEnabled = function() {
			return S
		}, M.refresh = function(t) {
			function e() {
				a.resolve(), s.$emit("$translateRefreshEnd", {
					language: t
				})
			}
			function n() {
				a.reject(), s.$emit("$translateRefreshEnd", {
					language: t
				})
			}
			if (!f) throw new Error("Couldn't refresh translation table, no loader registered!");
			var a = $.defer();
			if (s.$emit("$translateRefreshStart", {
				language: t
			}), t) v[t] ? H(t).then(function(n) {
				O(n.key, n.table), t === o && z(o), e()
			}, n) : n();
			else {
				var i = [],
					u = {};
				if (r && r.length) for (var l = 0, c = r.length; c > l; l++) i.push(H(r[l])), u[r[l]] = !0;
				o && !u[o] && i.push(H(o)), $.all(i).then(function(t) {
					angular.forEach(t, function(t) {
						v[t.key] && delete v[t.key], O(t.key, t.table)
					}), o && z(o), e()
				})
			}
			return a.promise
		}, M.instant = function(t, n, a) {
			if (null === t || angular.isUndefined(t)) return t;
			if (angular.isArray(t)) {
				for (var i = {}, u = 0, s = t.length; s > u; u++) i[t[u]] = M.instant(t[u], n, a);
				return i
			}
			if (angular.isString(t) && t.length < 1) return t;
			t && (t = I.apply(t));
			var c, f = [];
			e && f.push(e), o && f.push(o), r && r.length && (f = f.concat(r));
			for (var g = 0, h = f.length; h > g; g++) {
				var p = f[g];
				if (v[p] && "undefined" != typeof v[p][t] && (c = X(t, n, a)), "undefined" != typeof c) break
			}
			return c || "" === c || (c = N.interpolate(t, n), l && !V && (c = U(t))), c
		}, M.versionInfo = function() {
			return w
		}, M.loaderCache = function() {
			return d
		}, f && (angular.equals(v, {}) && M.use(M.use()), r && r.length)) for (var Z = function(t) {
			O(t.key, t.table), s.$emit("$translateChangeEnd", {
				language: t.key
			})
		}, te = 0, ee = r.length; ee > te; te++) R[r[te]] = H(r[te]).then(Z);
		return M
	}]
}]), angular.module("pascalprecht.translate").factory("$translateDefaultInterpolation", ["$interpolate", function(t) {
	var e, n = {}, r = "default",
		a = null,
		o = {
			escaped: function(t) {
				var e = {};
				for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = angular.element("<div></div>").text(t[n]).html());
				return e
			}
		}, i = function(t) {
			var e;
			return e = angular.isFunction(o[a]) ? o[a](t) : t
		};
	return n.setLocale = function(t) {
		e = t
	}, n.getInterpolationIdentifier = function() {
		return r
	}, n.useSanitizeValueStrategy = function(t) {
		return a = t, this
	}, n.interpolate = function(e, n) {
		return a && (n = i(n)), t(e)(n || {})
	}, n
}]), angular.module("pascalprecht.translate").constant("$STORAGE_KEY", "NG_TRANSLATE_LANG_KEY"), angular.module("pascalprecht.translate").directive("translate", ["$translate", "$q", "$interpolate", "$compile", "$parse", "$rootScope", function(t, e, n, r, a, o) {
	return {
		restrict: "AE",
		scope: !0,
		compile: function(e, i) {
			var u = i.translateValues ? i.translateValues : void 0,
				s = i.translateInterpolation ? i.translateInterpolation : void 0,
				l = e[0].outerHTML.match(/translate-value-+/i),
				c = "^(.*)(" + n.startSymbol() + ".*" + n.endSymbol() + ")(.*)";
			return function(e, f, g) {
				if (e.interpolateParams = {}, e.preText = "", e.postText = "", g.$observe("translate", function(t) {
					if (angular.equals(t, "") || !angular.isDefined(t)) {
						var r = f.text().match(c);
						angular.isArray(r) ? (e.preText = r[1], e.postText = r[3], e.translationId = n(r[2])(e.$parent)) : e.translationId = f.text().replace(/^\s+|\s+$/g, "")
					} else e.translationId = t
				}), g.$observe("translateDefault", function(t) {
					e.defaultText = t
				}), u && g.$observe("translateValues", function(t) {
					t && e.$parent.$watch(function() {
						angular.extend(e.interpolateParams, a(t)(e.$parent))
					})
				}), l) {
					var h = function(t) {
						g.$observe(t, function(n) {
							e.interpolateParams[angular.lowercase(t.substr(14, 1)) + t.substr(15)] = n
						})
					};
					for (var p in g) Object.prototype.hasOwnProperty.call(g, p) && "translateValue" === p.substr(0, 14) && "translateValues" !== p && h(p)
				}
				var d = function(e, n, a) {
					a || "undefined" == typeof n.defaultText || (e = n.defaultText), f.html(n.preText + e + n.postText);
					var o = t.isPostCompilingEnabled(),
						u = "undefined" != typeof i.translateCompile,
						s = u && "false" !== i.translateCompile;
					(o && !u || s) && r(f.contents())(n)
				}, v = function() {
					return u || l ? function() {
						var n = function() {
							e.translationId && e.interpolateParams && t(e.translationId, e.interpolateParams, s).then(function(t) {
								d(t, e, !0)
							}, function(t) {
								d(t, e, !1)
							})
						};
						e.$watch("interpolateParams", n, !0), e.$watch("translationId", n)
					} : function() {
						var n = e.$watch("translationId", function(r) {
							e.translationId && r && t(r, {}, s).then(function(t) {
								d(t, e, !0), n()
							}, function(t) {
								d(t, e, !1), n()
							})
						}, !0)
					}
				}(),
					$ = o.$on("$translateChangeSuccess", v);
				v(), e.$on("$destroy", $)
			}
		}
	}
}]), angular.module("pascalprecht.translate").directive("translateCloak", ["$rootScope", "$translate", function(t, e) {
	return {
		compile: function(n) {
			var r = function() {
				n.addClass(e.cloakClassName())
			}, a = function() {
				n.removeClass(e.cloakClassName())
			}, o = t.$on("$translateChangeEnd", function() {
				a(), o(), o = null
			});
			return r(),
			function(t, n, o) {
				o.translateCloak && o.translateCloak.length && o.$observe("translateCloak", function(t) {
					e(t).then(a, r)
				})
			}
		}
	}
}]), angular.module("pascalprecht.translate").filter("translate", ["$parse", "$translate", function(t, e) {
	var n = function(n, r, a) {
		return angular.isObject(r) || (r = t(r)(this)), e.instant(n, r, a)
	};
	return n.$stateful = !0, n
}]);
angular.module("pascalprecht.translate").factory("$translateUrlLoader", ["$q", "$http", function(r, e) {
	return function(n) {
		if (!n || !n.url) throw new Error("Couldn't use urlLoader since no url is given!");
		var t = r.defer();
		return e(angular.extend({
			url: n.url,
			params: {
				lang: n.key
			},
			method: "GET"
		}, n.$http)).success(function(r) {
			t.resolve(r)
		}).error(function() {
			t.reject(n.key)
		}), t.promise
	}
}]);
angular.module("pascalprecht.translate").factory("$translateStaticFilesLoader", ["$q", "$http", function(r, e) {
	return function(t) {
		if (!t || !angular.isString(t.prefix) || !angular.isString(t.suffix)) throw new Error("Couldn't load static files, no prefix or suffix specified!");
		var i = r.defer();
		return e(angular.extend({
			url: [t.prefix, t.key, t.suffix].join(""),
			method: "GET",
			params: ""
		}, t.$http)).success(function(r) {
			i.resolve(r)
		}).error(function() {
			i.reject(t.key)
		}), i.promise
	}
}]);
angular.module("pascalprecht.translate").factory("$translateLocalStorage", ["$window", "$translateCookieStorage", function(t, a) {
	var e = function() {
		var a;
		return {
			get: function(e) {
				return a || (a = t.localStorage.getItem(e)), a
			},
			set: function(e, r) {
				a = r, t.localStorage.setItem(e, r)
			}
		}
	}(),
		r = "localStorage" in t;
	if (r) {
		var o = "pascalprecht.translate.storageTest";
		try {
			null !== t.localStorage ? (t.localStorage.setItem(o, "foo"), t.localStorage.removeItem(o), r = !0) : r = !1
		} catch (l) {
			r = !1
		}
	}
	var n = r ? e : a;
	return n
}]);
angular.module("pascalprecht.translate").factory("$translateCookieStorage", ["$cookieStore", function(t) {
	var e = {
		get: function(e) {
			return t.get(e)
		},
		set: function(e, r) {
			t.put(e, r)
		}
	};
	return e
}]);
! function() {
	"use strict";

	function e(e) {
		var n = [];
		return angular.forEach(e.requires, function(e) {
			-1 === l.indexOf(e) && n.push(e)
		}), n
	}
	function n(e) {
		try {
			return angular.module(e)
		} catch (n) {
			if (/No module/.test(n) || n.message.indexOf("$injector:nomod") > -1) return !1
		}
	}
	function r(e) {
		try {
			return angular.module(e)
		} catch (n) {
			throw (/No module/.test(n) || n.message.indexOf("$injector:nomod") > -1) && (n.message = 'The module "' + e + '" that you are trying to load does not exist. ' + n.message), n
		}
	}
	function a(e, n, r, a) {
		if (n) {
			var o, i, u, l;
			for (o = 0, i = n.length; i > o; o++) if (u = n[o], angular.isArray(u)) {
				if (null !== e) {
					if (!e.hasOwnProperty(u[0])) throw new Error("unsupported provider " + u[0]);
					l = e[u[0]]
				}
				var s = t(u, r);
				if ("invoke" !== u[1]) s && angular.isDefined(l) && l[u[1]].apply(l, u[2]);
				else {
					var c = function(e) {
						var n = f.indexOf(r + "-" + e);
						(-1 === n || a) && (-1 === n && f.push(r + "-" + e), angular.isDefined(l) && l[u[1]].apply(l, u[2]))
					};
					if (angular.isFunction(u[2][0])) c(u[2][0]);
					else if (angular.isArray(u[2][0])) for (var d = 0, g = u[2][0].length; g > d; d++) angular.isFunction(u[2][0][d]) && c(u[2][0][d])
				}
			}
		}
	}
	function o(e, n, r) {
		if (n) {
			var t, u, s, f = [];
			for (t = n.length - 1; t >= 0; t--) if (u = n[t], "string" != typeof u && (u = i(u)), u && -1 === c.indexOf(u)) {
				var g = -1 === l.indexOf(u);
				if (s = angular.module(u), g && (l.push(u), o(e, s.requires, r)), s._runBlocks.length > 0) for (d[u] = []; s._runBlocks.length > 0;) d[u].push(s._runBlocks.shift());
				angular.isDefined(d[u]) && (g || r.rerun) && (f = f.concat(d[u])), a(e, s._invokeQueue, u, r.reconfig), a(e, s._configBlocks, u, r.reconfig), h(g ? "ocLazyLoad.moduleLoaded" : "ocLazyLoad.moduleReloaded", u), n.pop(), c.push(u)
			}
			var p = e.getInstanceInjector();
			angular.forEach(f, function(e) {
				p.invoke(e)
			})
		}
	}
	function t(e, n) {
		var r = e[2][0],
			a = e[1],
			o = !1;
		angular.isUndefined(s[n]) && (s[n] = {}), angular.isUndefined(s[n][a]) && (s[n][a] = []);
		var t = function(e) {
			o = !0, s[n][a].push(e), h("ocLazyLoad.componentLoaded", [n, a, e])
		};
		if (angular.isString(r) && -1 === s[n][a].indexOf(r)) t(r);
		else {
			if (!angular.isObject(r)) return !1;
			angular.forEach(r, function(e) {
				angular.isString(e) && -1 === s[n][a].indexOf(e) && t(e)
			})
		}
		return o
	}
	function i(e) {
		var n = null;
		return angular.isString(e) ? n = e : angular.isObject(e) && e.hasOwnProperty("name") && angular.isString(e.name) && (n = e.name), n
	}
	function u(e) {
		function n(e) {
			return e && t.push(e)
		}
		var r, o, t = [e],
			i = ["ng:app", "ng-app", "x-ng-app", "data-ng-app"],
			u = /\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;
		angular.forEach(i, function(r) {
			i[r] = !0, n(document.getElementById(r)), r = r.replace(":", "\\:"), e[0].querySelectorAll && (angular.forEach(e[0].querySelectorAll("." + r), n), angular.forEach(e[0].querySelectorAll("." + r + "\\:"), n), angular.forEach(e[0].querySelectorAll("[" + r + "]"), n))
		}), angular.forEach(t, function(n) {
			if (!r) {
				var a = " " + e.className + " ",
					t = u.exec(a);
				t ? (r = n, o = (t[2] || "").replace(/\s+/g, ",")) : angular.forEach(n.attributes, function(e) {
					!r && i[e.name] && (r = n, o = e.value)
				})
			}
		}), r && ! function s(e) {
			if (-1 === l.indexOf(e)) {
				l.push(e);
				var n = angular.module(e);
				a(null, n._invokeQueue, e), a(null, n._configBlocks, e), angular.forEach(n.requires, s)
			}
		}(o)
	}
	var l = ["ng"],
		s = {}, f = [],
		c = [],
		d = {}, g = angular.module("oc.lazyLoad", ["ng"]),
		h = angular.noop;
	g.provider("$ocLazyLoad", ["$controllerProvider", "$provide", "$compileProvider", "$filterProvider", "$injector", "$animateProvider", function(a, t, s, f, d, g) {
		var p, m, v, y = {}, L = {
			$controllerProvider: a,
			$compileProvider: s,
			$filterProvider: f,
			$provide: t,
			$injector: d,
			$animateProvider: g
		}, w = document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0],
			O = !1,
			E = !1;
		u(angular.element(window.document)), this.$get = ["$log", "$q", "$templateCache", "$http", "$rootElement", "$rootScope", "$cacheFactory", "$interval", function(a, t, u, s, f, d, g, j) {
			var $, x = g("ocLazyLoad"),
				b = !1,
				D = !1;
			O || (a = {}, a.error = angular.noop, a.warn = angular.noop, a.info = angular.noop), L.getInstanceInjector = function() {
				return $ ? $ : $ = f.data("$injector") || angular.injector()
			}, h = function(e, n) {
				E && d.$broadcast(e, n), O && a.info(e, n)
			};
			var P = function(e, n, r) {
				var a, o, i = t.defer(),
					u = function(e) {
						var n = (new Date).getTime();
						return e.indexOf("?") >= 0 ? "&" === e.substring(0, e.length - 1) ? e + "_dc=" + n : e + "&_dc=" + n : e + "?_dc=" + n
					};
				switch (angular.isUndefined(x.get(n)) && x.put(n, i.promise), e) {
					case "css":
						a = document.createElement("link"), a.type = "text/css", a.rel = "stylesheet", a.href = r.cache === !1 ? u(n) : n;
						break;
					case "js":
						a = document.createElement("script"), a.src = r.cache === !1 ? u(n) : n;
						break;
					default:
						i.reject(new Error('Requested type "' + e + '" is not known. Could not inject "' + n + '"'))
				}
				a.onload = a.onreadystatechange = function() {
					a.readyState && !/^c|loade/.test(a.readyState) || o || (a.onload = a.onreadystatechange = null, o = 1, h("ocLazyLoad.fileLoaded", n), i.resolve())
				}, a.onerror = function() {
					i.reject(new Error("Unable to load " + n))
				}, a.async = r.serie ? 0 : 1;
				var l = w.lastChild;
				if (r.insertBefore) {
					var s = angular.element(r.insertBefore);
					s && s.length > 0 && (l = s[0])
				}
				if (w.insertBefore(a, l), "css" == e) {
					if (!b) {
						var f = navigator.userAgent.toLowerCase();
						if (/iP(hone|od|ad)/.test(navigator.platform)) {
							var c = navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),
								d = parseFloat([parseInt(c[1], 10), parseInt(c[2], 10), parseInt(c[3] || 0, 10)].join("."));
							D = 6 > d
						} else if (f.indexOf("android") > -1) {
							var g = parseFloat(f.slice(f.indexOf("android") + 8));
							D = 4.4 > g
						} else if (f.indexOf("safari") > -1 && -1 == f.indexOf("chrome")) {
							var p = parseFloat(f.match(/version\/([\.\d]+)/i)[1]);
							D = 6 > p
						}
					}
					if (D) var m = 1e3,
						v = j(function() {
							try {
								a.sheet.cssRules, j.cancel(v), a.onload()
							} catch (e) {
								--m <= 0 && a.onerror()
							}
						}, 20)
				}
				return i.promise
			};
			angular.isUndefined(p) && (p = function(e, n, r) {
				var a = [];
				angular.forEach(e, function(e) {
					a.push(P("js", e, r))
				}), t.all(a).then(function() {
					n()
				}, function(e) {
					n(e)
				})
			}, p.ocLazyLoadLoader = !0), angular.isUndefined(m) && (m = function(e, n, r) {
				var a = [];
				angular.forEach(e, function(e) {
					a.push(P("css", e, r))
				}), t.all(a).then(function() {
					n()
				}, function(e) {
					n(e)
				})
			}, m.ocLazyLoadLoader = !0), angular.isUndefined(v) && (v = function(e, n, r) {
				var a = [];
				return angular.forEach(e, function(e) {
					var n = t.defer();
					a.push(n.promise), s.get(e, r).success(function(r) {
						angular.isString(r) && r.length > 0 && angular.forEach(angular.element(r), function(e) {
							"SCRIPT" === e.nodeName && "text/ng-template" === e.type && u.put(e.id, e.innerHTML)
						}), angular.isUndefined(x.get(e)) && x.put(e, !0), n.resolve()
					}).error(function(r) {
						n.reject(new Error('Unable to load template file "' + e + '": ' + r))
					})
				}), t.all(a).then(function() {
					n()
				}, function(e) {
					n(e)
				})
			}, v.ocLazyLoadLoader = !0);
			var z = function(e, n) {
				var r = [],
					o = [],
					i = [],
					u = [],
					l = null;
				angular.extend(n || {}, e);
				var s = function(e) {
					l = x.get(e), angular.isUndefined(l) || n.cache === !1 ? /\.css[^\.]*$/.test(e) && -1 === r.indexOf(e) ? r.push(e) : /\.(htm|html)[^\.]*$/.test(e) && -1 === o.indexOf(e) ? o.push(e) : -1 === i.indexOf(e) && i.push(e) : l && u.push(l)
				};
				if (n.serie ? s(n.files.shift()) : angular.forEach(n.files, function(e) {
					s(e)
				}), r.length > 0) {
					var f = t.defer();
					m(r, function(e) {
						angular.isDefined(e) && m.hasOwnProperty("ocLazyLoadLoader") ? (a.error(e), f.reject(e)) : f.resolve()
					}, n), u.push(f.promise)
				}
				if (o.length > 0) {
					var c = t.defer();
					v(o, function(e) {
						angular.isDefined(e) && v.hasOwnProperty("ocLazyLoadLoader") ? (a.error(e), c.reject(e)) : c.resolve()
					}, n), u.push(c.promise)
				}
				if (i.length > 0) {
					var d = t.defer();
					p(i, function(e) {
						angular.isDefined(e) && p.hasOwnProperty("ocLazyLoadLoader") ? (a.error(e), d.reject(e)) : d.resolve()
					}, n), u.push(d.promise)
				}
				return n.serie && n.files.length > 0 ? t.all(u).then(function() {
					return z(e, n)
				}) : t.all(u)
			};
			return {
				getModuleConfig: function(e) {
					if (!angular.isString(e)) throw new Error("You need to give the name of the module to get");
					return y[e] ? y[e] : null
				},
				setModuleConfig: function(e) {
					if (!angular.isObject(e)) throw new Error("You need to give the module config object to set");
					return y[e.name] = e, e
				},
				getModules: function() {
					return l
				},
				isLoaded: function(e) {
					var r = function(e) {
						var r = l.indexOf(e) > -1;
						return r || (r = !! n(e)), r
					};
					if (angular.isString(e) && (e = [e]), angular.isArray(e)) {
						var a, o;
						for (a = 0, o = e.length; o > a; a++) if (!r(e[a])) return !1;
						return !0
					}
					throw new Error("You need to define the module(s) name(s)")
				},
				load: function(u, s) {
					var f, d, g = this,
						h = null,
						p = [],
						m = [],
						v = t.defer();
					if (angular.isUndefined(s) && (s = {}), angular.isArray(u)) return angular.forEach(u, function(e) {
						e && m.push(g.load(e, s))
					}), t.all(m).then(function() {
						v.resolve(u)
					}, function(e) {
						v.reject(e)
					}), v.promise;
					if (f = i(u), "string" == typeof u ? (h = g.getModuleConfig(u), h || (h = {
						files: [u]
					}, f = null)) : "object" == typeof u && (h = g.setModuleConfig(u)), null === h ? (d = 'Module "' + f + '" is not configured, cannot load.', a.error(d), v.reject(new Error(d))) : angular.isDefined(h.template) && (angular.isUndefined(h.files) && (h.files = []), angular.isString(h.template) ? h.files.push(h.template) : angular.isArray(h.template) && h.files.concat(h.template)), p.push = function(e) {
						-1 === this.indexOf(e) && Array.prototype.push.apply(this, arguments)
					}, angular.isDefined(f) && n(f) && -1 !== l.indexOf(f) && (p.push(f), angular.isUndefined(h.files))) return v.resolve(), v.promise;
					var y = {};
					angular.extend(y, s, h);
					var w = function O(o) {
						var u, l, s, f, c = [];
						if (u = i(o), null === u) return t.when();
						try {
							l = r(u)
						} catch (d) {
							var h = t.defer();
							return a.error(d.message), h.reject(d), h.promise
						}
						return s = e(l), angular.forEach(s, function(e) {
							if ("string" == typeof e) {
								var r = g.getModuleConfig(e);
								if (null === r) return void p.push(e);
								e = r
							}
							return n(e.name) ? void("string" != typeof o && (f = e.files.filter(function(n) {
								return g.getModuleConfig(e.name).files.indexOf(n) < 0
							}), 0 !== f.length && a.warn('Module "', u, '" attempted to redefine configuration for dependency. "', e.name, '"\n Additional Files Loaded:', f), c.push(z(e.files, y).then(function() {
								return O(e)
							})))) : ("object" == typeof e && (e.hasOwnProperty("name") && e.name && (g.setModuleConfig(e), p.push(e.name)), e.hasOwnProperty("css") && 0 !== e.css.length && angular.forEach(e.css, function(e) {
								P("css", e, y)
							})), void(e.hasOwnProperty("files") && 0 !== e.files.length && e.files && c.push(z(e, y).then(function() {
								return O(e)
							}))))
						}), t.all(c)
					};
					return z(h, y).then(function() {
						null === f ? v.resolve(u) : (p.push(f), w(f).then(function() {
							try {
								c = [], o(L, p, y)
							} catch (e) {
								return a.error(e.message), void v.reject(e)
							}
							v.resolve(u)
						}, function(e) {
							v.reject(e)
						}))
					}, function(e) {
						v.reject(e)
					}), v.promise
				}
			}
		}], this.config = function(e) {
			if (angular.isDefined(e.jsLoader) || angular.isDefined(e.asyncLoader)) {
				if (!angular.isFunction(e.jsLoader || e.asyncLoader)) throw "The js loader needs to be a function";
				p = e.jsLoader || e.asyncLoader
			}
			if (angular.isDefined(e.cssLoader)) {
				if (!angular.isFunction(e.cssLoader)) throw "The css loader needs to be a function";
				m = e.cssLoader
			}
			if (angular.isDefined(e.templatesLoader)) {
				if (!angular.isFunction(e.templatesLoader)) throw "The template loader needs to be a function";
				v = e.templatesLoader
			}
			if (angular.isDefined(e.loadedModules)) {
				var n = function(e) {
					l.indexOf(e) < 0 && (l.push(e), angular.forEach(angular.module(e).requires, n))
				};
				angular.forEach(e.loadedModules, n)
			}
			angular.isDefined(e.modules) && (angular.isArray(e.modules) ? angular.forEach(e.modules, function(e) {
				y[e.name] = e
			}) : y[e.modules.name] = e.modules), angular.isDefined(e.debug) && (O = e.debug), angular.isDefined(e.events) && (E = e.events)
		}
	}]), g.directive("ocLazyLoad", ["$ocLazyLoad", "$compile", "$animate", "$parse", function(e, n, r, a) {
		return {
			restrict: "A",
			terminal: !0,
			priority: 1e3,
			compile: function(o) {
				var t = o[0].innerHTML;
				return o.html(""),
				function(o, i, u) {
					var l = a(u.ocLazyLoad);
					o.$watch(function() {
						return l(o) || u.ocLazyLoad
					}, function(a) {
						angular.isDefined(a) && e.load(a).then(function() {
							r.enter(n(t)(o), null, i)
						})
					}, !0)
				}
			}
		}
	}]), Array.prototype.indexOf || (Array.prototype.indexOf = function(e, n) {
		var r;
		if (null == this) throw new TypeError('"this" is null or not defined');
		var a = Object(this),
			o = a.length >>> 0;
		if (0 === o) return -1;
		var t = +n || 0;
		if (1 / 0 === Math.abs(t) && (t = 0), t >= o) return -1;
		for (r = Math.max(t >= 0 ? t : o - Math.abs(t), 0); o > r;) {
			if (r in a && a[r] === e) return r;
			r++
		}
		return -1
	})
}();
angular.module("ui.bootstrap", ["ui.bootstrap.tpls", "ui.bootstrap.transition", "ui.bootstrap.collapse", "ui.bootstrap.accordion", "ui.bootstrap.alert", "ui.bootstrap.bindHtml", "ui.bootstrap.buttons", "ui.bootstrap.carousel", "ui.bootstrap.dateparser", "ui.bootstrap.position", "ui.bootstrap.datepicker", "ui.bootstrap.dropdown", "ui.bootstrap.modal", "ui.bootstrap.pagination", "ui.bootstrap.tooltip", "ui.bootstrap.popover", "ui.bootstrap.progressbar", "ui.bootstrap.rating", "ui.bootstrap.tabs", "ui.bootstrap.timepicker", "ui.bootstrap.typeahead"]), angular.module("ui.bootstrap.tpls", ["template/accordion/accordion-group.html", "template/accordion/accordion.html", "template/alert/alert.html", "template/carousel/carousel.html", "template/carousel/slide.html", "template/datepicker/datepicker.html", "template/datepicker/day.html", "template/datepicker/month.html", "template/datepicker/popup.html", "template/datepicker/year.html", "template/modal/backdrop.html", "template/modal/window.html", "template/pagination/pager.html", "template/pagination/pagination.html", "template/tooltip/tooltip-html-unsafe-popup.html", "template/tooltip/tooltip-popup.html", "template/popover/popover.html", "template/progressbar/bar.html", "template/progressbar/progress.html", "template/progressbar/progressbar.html", "template/rating/rating.html", "template/tabs/tab.html", "template/tabs/tabset.html", "template/timepicker/timepicker.html", "template/typeahead/typeahead-match.html", "template/typeahead/typeahead-popup.html"]), angular.module("ui.bootstrap.transition", []).factory("$transition", ["$q", "$timeout", "$rootScope", function(e, t, n) {
	function a(e) {
		for (var t in e) if (void 0 !== r.style[t]) return e[t]
	}
	var i = function(a, r, o) {
		o = o || {};
		var l = e.defer(),
			s = i[o.animation ? "animationEndEventName" : "transitionEndEventName"],
			c = function() {
				n.$apply(function() {
					a.unbind(s, c), l.resolve(a)
				})
			};
		return s && a.bind(s, c), t(function() {
			angular.isString(r) ? a.addClass(r) : angular.isFunction(r) ? r(a) : angular.isObject(r) && a.css(r), s || l.resolve(a)
		}), l.promise.cancel = function() {
			s && a.unbind(s, c), l.reject("Transition cancelled")
		}, l.promise
	}, r = document.createElement("trans"),
		o = {
			WebkitTransition: "webkitTransitionEnd",
			MozTransition: "transitionend",
			OTransition: "oTransitionEnd",
			transition: "transitionend"
		}, l = {
			WebkitTransition: "webkitAnimationEnd",
			MozTransition: "animationend",
			OTransition: "oAnimationEnd",
			transition: "animationend"
		};
	return i.transitionEndEventName = a(o), i.animationEndEventName = a(l), i
}]), angular.module("ui.bootstrap.collapse", ["ui.bootstrap.transition"]).directive("collapse", ["$transition", function(e) {
	return {
		link: function(t, n, a) {
			function i(t) {
				function a() {
					c === i && (c = void 0)
				}
				var i = e(n, t);
				return c && c.cancel(), c = i, i.then(a, a), i
			}
			function r() {
				u ? (u = !1, o()) : (n.removeClass("collapse").addClass("collapsing"), i({
					height: n[0].scrollHeight + "px"
				}).then(o))
			}
			function o() {
				n.removeClass("collapsing"), n.addClass("collapse in"), n.css({
					height: "auto"
				})
			}
			function l() {
				if (u) u = !1, s(), n.css({
					height: 0
				});
				else {
					n.css({
						height: n[0].scrollHeight + "px"
					}); {
						n[0].offsetWidth
					}
					n.removeClass("collapse in").addClass("collapsing"), i({
						height: 0
					}).then(s)
				}
			}
			function s() {
				n.removeClass("collapsing"), n.addClass("collapse")
			}
			var c, u = !0;
			t.$watch(a.collapse, function(e) {
				e ? l() : r()
			})
		}
	}
}]), angular.module("ui.bootstrap.accordion", ["ui.bootstrap.collapse"]).constant("accordionConfig", {
	closeOthers: !0
}).controller("AccordionController", ["$scope", "$attrs", "accordionConfig", function(e, t, n) {
	this.groups = [], this.closeOthers = function(a) {
		var i = angular.isDefined(t.closeOthers) ? e.$eval(t.closeOthers) : n.closeOthers;
		i && angular.forEach(this.groups, function(e) {
			e !== a && (e.isOpen = !1)
		})
	}, this.addGroup = function(e) {
		var t = this;
		this.groups.push(e), e.$on("$destroy", function() {
			t.removeGroup(e)
		})
	}, this.removeGroup = function(e) {
		var t = this.groups.indexOf(e); - 1 !== t && this.groups.splice(t, 1)
	}
}]).directive("accordion", function() {
	return {
		restrict: "EA",
		controller: "AccordionController",
		transclude: !0,
		replace: !1,
		templateUrl: "template/accordion/accordion.html"
	}
}).directive("accordionGroup", function() {
	return {
		require: "^accordion",
		restrict: "EA",
		transclude: !0,
		replace: !0,
		templateUrl: "template/accordion/accordion-group.html",
		scope: {
			heading: "@",
			isOpen: "=?",
			isDisabled: "=?"
		},
		controller: function() {
			this.setHeading = function(e) {
				this.heading = e
			}
		},
		link: function(e, t, n, a) {
			a.addGroup(e), e.$watch("isOpen", function(t) {
				t && a.closeOthers(e)
			}), e.toggleOpen = function() {
				e.isDisabled || (e.isOpen = !e.isOpen)
			}
		}
	}
}).directive("accordionHeading", function() {
	return {
		restrict: "EA",
		transclude: !0,
		template: "",
		replace: !0,
		require: "^accordionGroup",
		link: function(e, t, n, a, i) {
			a.setHeading(i(e, function() {}))
		}
	}
}).directive("accordionTransclude", function() {
	return {
		require: "^accordionGroup",
		link: function(e, t, n, a) {
			e.$watch(function() {
				return a[n.accordionTransclude]
			}, function(e) {
				e && (t.html(""), t.append(e))
			})
		}
	}
}), angular.module("ui.bootstrap.alert", []).controller("AlertController", ["$scope", "$attrs", function(e, t) {
	e.closeable = "close" in t, this.close = e.close
}]).directive("alert", function() {
	return {
		restrict: "EA",
		controller: "AlertController",
		templateUrl: "template/alert/alert.html",
		transclude: !0,
		replace: !0,
		scope: {
			type: "@",
			close: "&"
		}
	}
}).directive("dismissOnTimeout", ["$timeout", function(e) {
	return {
		require: "alert",
		link: function(t, n, a, i) {
			e(function() {
				i.close()
			}, parseInt(a.dismissOnTimeout, 10))
		}
	}
}]), angular.module("ui.bootstrap.bindHtml", []).directive("bindHtmlUnsafe", function() {
	return function(e, t, n) {
		t.addClass("ng-binding").data("$binding", n.bindHtmlUnsafe), e.$watch(n.bindHtmlUnsafe, function(e) {
			t.html(e || "")
		})
	}
}), angular.module("ui.bootstrap.buttons", []).constant("buttonConfig", {
	activeClass: "active",
	toggleEvent: "click"
}).controller("ButtonsController", ["buttonConfig", function(e) {
	this.activeClass = e.activeClass || "active", this.toggleEvent = e.toggleEvent || "click"
}]).directive("btnRadio", function() {
	return {
		require: ["btnRadio", "ngModel"],
		controller: "ButtonsController",
		link: function(e, t, n, a) {
			var i = a[0],
				r = a[1];
			r.$render = function() {
				t.toggleClass(i.activeClass, angular.equals(r.$modelValue, e.$eval(n.btnRadio)))
			}, t.bind(i.toggleEvent, function() {
				var a = t.hasClass(i.activeClass);
				(!a || angular.isDefined(n.uncheckable)) && e.$apply(function() {
					r.$setViewValue(a ? null : e.$eval(n.btnRadio)), r.$render()
				})
			})
		}
	}
}).directive("btnCheckbox", function() {
	return {
		require: ["btnCheckbox", "ngModel"],
		controller: "ButtonsController",
		link: function(e, t, n, a) {
			function i() {
				return o(n.btnCheckboxTrue, !0)
			}
			function r() {
				return o(n.btnCheckboxFalse, !1)
			}
			function o(t, n) {
				var a = e.$eval(t);
				return angular.isDefined(a) ? a : n
			}
			var l = a[0],
				s = a[1];
			s.$render = function() {
				t.toggleClass(l.activeClass, angular.equals(s.$modelValue, i()))
			}, t.bind(l.toggleEvent, function() {
				e.$apply(function() {
					s.$setViewValue(t.hasClass(l.activeClass) ? r() : i()), s.$render()
				})
			})
		}
	}
}), angular.module("ui.bootstrap.carousel", ["ui.bootstrap.transition"]).controller("CarouselController", ["$scope", "$timeout", "$interval", "$transition", function(e, t, n, a) {
	function i() {
		r();
		var t = +e.interval;
		!isNaN(t) && t > 0 && (l = n(o, t))
	}
	function r() {
		l && (n.cancel(l), l = null)
	}
	function o() {
		var t = +e.interval;
		s && !isNaN(t) && t > 0 ? e.next() : e.pause()
	}
	var l, s, c = this,
		u = c.slides = e.slides = [],
		p = -1;
	c.currentSlide = null;
	var d = !1;
	c.select = e.select = function(n, r) {
		function o() {
			if (!d) {
				if (c.currentSlide && angular.isString(r) && !e.noTransition && n.$element) {
					n.$element.addClass(r); {
						n.$element[0].offsetWidth
					}
					angular.forEach(u, function(e) {
						angular.extend(e, {
							direction: "",
							entering: !1,
							leaving: !1,
							active: !1
						})
					}), angular.extend(n, {
						direction: r,
						active: !0,
						entering: !0
					}), angular.extend(c.currentSlide || {}, {
						direction: r,
						leaving: !0
					}), e.$currentTransition = a(n.$element, {}),
					function(t, n) {
						e.$currentTransition.then(function() {
							l(t, n)
						}, function() {
							l(t, n)
						})
					}(n, c.currentSlide)
				} else l(n, c.currentSlide);
				c.currentSlide = n, p = s, i()
			}
		}
		function l(t, n) {
			angular.extend(t, {
				direction: "",
				active: !0,
				leaving: !1,
				entering: !1
			}), angular.extend(n || {}, {
				direction: "",
				active: !1,
				leaving: !1,
				entering: !1
			}), e.$currentTransition = null
		}
		var s = u.indexOf(n);
		void 0 === r && (r = s > p ? "next" : "prev"), n && n !== c.currentSlide && (e.$currentTransition ? (e.$currentTransition.cancel(), t(o)) : o())
	}, e.$on("$destroy", function() {
		d = !0
	}), c.indexOfSlide = function(e) {
		return u.indexOf(e)
	}, e.next = function() {
		var t = (p + 1) % u.length;
		return e.$currentTransition ? void 0 : c.select(u[t], "next")
	}, e.prev = function() {
		var t = 0 > p - 1 ? u.length - 1 : p - 1;
		return e.$currentTransition ? void 0 : c.select(u[t], "prev")
	}, e.isActive = function(e) {
		return c.currentSlide === e
	}, e.$watch("interval", i), e.$on("$destroy", r), e.play = function() {
		s || (s = !0, i())
	}, e.pause = function() {
		e.noPause || (s = !1, r())
	}, c.addSlide = function(t, n) {
		t.$element = n, u.push(t), 1 === u.length || t.active ? (c.select(u[u.length - 1]), 1 == u.length && e.play()) : t.active = !1
	}, c.removeSlide = function(e) {
		var t = u.indexOf(e);
		u.splice(t, 1), u.length > 0 && e.active ? c.select(t >= u.length ? u[t - 1] : u[t]) : p > t && p--
	}
}]).directive("carousel", [function() {
	return {
		restrict: "EA",
		transclude: !0,
		replace: !0,
		controller: "CarouselController",
		require: "carousel",
		templateUrl: "template/carousel/carousel.html",
		scope: {
			interval: "=",
			noTransition: "=",
			noPause: "="
		}
	}
}]).directive("slide", function() {
	return {
		require: "^carousel",
		restrict: "EA",
		transclude: !0,
		replace: !0,
		templateUrl: "template/carousel/slide.html",
		scope: {
			active: "=?"
		},
		link: function(e, t, n, a) {
			a.addSlide(e, t), e.$on("$destroy", function() {
				a.removeSlide(e)
			}), e.$watch("active", function(t) {
				t && a.select(e)
			})
		}
	}
}), angular.module("ui.bootstrap.dateparser", []).service("dateParser", ["$locale", "orderByFilter", function(e, t) {
	function n(e) {
		var n = [],
			a = e.split("");
		return angular.forEach(i, function(t, i) {
			var r = e.indexOf(i);
			if (r > -1) {
				e = e.split(""), a[r] = "(" + t.regex + ")", e[r] = "$";
				for (var o = r + 1, l = r + i.length; l > o; o++) a[o] = "", e[o] = "$";
				e = e.join(""), n.push({
					index: r,
					apply: t.apply
				})
			}
		}), {
			regex: new RegExp("^" + a.join("") + "$"),
			map: t(n, "index")
		}
	}
	function a(e, t, n) {
		return 1 === t && n > 28 ? 29 === n && (e % 4 === 0 && e % 100 !== 0 || e % 400 === 0) : 3 === t || 5 === t || 8 === t || 10 === t ? 31 > n : !0
	}
	this.parsers = {};
	var i = {
		yyyy: {
			regex: "\\d{4}",
			apply: function(e) {
				this.year = +e
			}
		},
		yy: {
			regex: "\\d{2}",
			apply: function(e) {
				this.year = +e + 2e3
			}
		},
		y: {
			regex: "\\d{1,4}",
			apply: function(e) {
				this.year = +e
			}
		},
		MMMM: {
			regex: e.DATETIME_FORMATS.MONTH.join("|"),
			apply: function(t) {
				this.month = e.DATETIME_FORMATS.MONTH.indexOf(t)
			}
		},
		MMM: {
			regex: e.DATETIME_FORMATS.SHORTMONTH.join("|"),
			apply: function(t) {
				this.month = e.DATETIME_FORMATS.SHORTMONTH.indexOf(t)
			}
		},
		MM: {
			regex: "0[1-9]|1[0-2]",
			apply: function(e) {
				this.month = e - 1
			}
		},
		M: {
			regex: "[1-9]|1[0-2]",
			apply: function(e) {
				this.month = e - 1
			}
		},
		dd: {
			regex: "[0-2][0-9]{1}|3[0-1]{1}",
			apply: function(e) {
				this.date = +e
			}
		},
		d: {
			regex: "[1-2]?[0-9]{1}|3[0-1]{1}",
			apply: function(e) {
				this.date = +e
			}
		},
		EEEE: {
			regex: e.DATETIME_FORMATS.DAY.join("|")
		},
		EEE: {
			regex: e.DATETIME_FORMATS.SHORTDAY.join("|")
		}
	};
	this.parse = function(t, i) {
		if (!angular.isString(t) || !i) return t;
		i = e.DATETIME_FORMATS[i] || i, this.parsers[i] || (this.parsers[i] = n(i));
		var r = this.parsers[i],
			o = r.regex,
			l = r.map,
			s = t.match(o);
		if (s && s.length) {
			for (var c, u = {
				year: 1900,
				month: 0,
				date: 1,
				hours: 0
			}, p = 1, d = s.length; d > p; p++) {
				var g = l[p - 1];
				g.apply && g.apply.call(u, s[p])
			}
			return a(u.year, u.month, u.date) && (c = new Date(u.year, u.month, u.date, u.hours)), c
		}
	}
}]), angular.module("ui.bootstrap.position", []).factory("$position", ["$document", "$window", function(e, t) {
	function n(e, n) {
		return e.currentStyle ? e.currentStyle[n] : t.getComputedStyle ? t.getComputedStyle(e)[n] : e.style[n]
	}
	function a(e) {
		return "static" === (n(e, "position") || "static")
	}
	var i = function(t) {
		for (var n = e[0], i = t.offsetParent || n; i && i !== n && a(i);) i = i.offsetParent;
		return i || n
	};
	return {
		position: function(t) {
			var n = this.offset(t),
				a = {
					top: 0,
					left: 0
				}, r = i(t[0]);
			r != e[0] && (a = this.offset(angular.element(r)), a.top += r.clientTop - r.scrollTop, a.left += r.clientLeft - r.scrollLeft);
			var o = t[0].getBoundingClientRect();
			return {
				width: o.width || t.prop("offsetWidth"),
				height: o.height || t.prop("offsetHeight"),
				top: n.top - a.top,
				left: n.left - a.left
			}
		},
		offset: function(n) {
			var a = n[0].getBoundingClientRect();
			return {
				width: a.width || n.prop("offsetWidth"),
				height: a.height || n.prop("offsetHeight"),
				top: a.top + (t.pageYOffset || e[0].documentElement.scrollTop),
				left: a.left + (t.pageXOffset || e[0].documentElement.scrollLeft)
			}
		},
		positionElements: function(e, t, n, a) {
			var i, r, o, l, s = n.split("-"),
				c = s[0],
				u = s[1] || "center";
			i = a ? this.offset(e) : this.position(e), r = t.prop("offsetWidth"), o = t.prop("offsetHeight");
			var p = {
				center: function() {
					return i.left + i.width / 2 - r / 2
				},
				left: function() {
					return i.left
				},
				right: function() {
					return i.left + i.width
				}
			}, d = {
				center: function() {
					return i.top + i.height / 2 - o / 2
				},
				top: function() {
					return i.top
				},
				bottom: function() {
					return i.top + i.height
				}
			};
			switch (c) {
				case "right":
					l = {
						top: d[u](),
						left: p[c]()
					};
					break;
				case "left":
					l = {
						top: d[u](),
						left: i.left - r
					};
					break;
				case "bottom":
					l = {
						top: d[c](),
						left: p[u]()
					};
					break;
				default:
					l = {
						top: i.top - o,
						left: p[u]()
					}
			}
			return l
		}
	}
}]), angular.module("ui.bootstrap.datepicker", ["ui.bootstrap.dateparser", "ui.bootstrap.position"]).constant("datepickerConfig", {
	formatDay: "dd",
	formatMonth: "MMMM",
	formatYear: "yyyy",
	formatDayHeader: "EEE",
	formatDayTitle: "MMMM yyyy",
	formatMonthTitle: "yyyy",
	datepickerMode: "day",
	minMode: "day",
	maxMode: "year",
	showWeeks: !0,
	startingDay: 0,
	yearRange: 20,
	minDate: null,
	maxDate: null
}).controller("DatepickerController", ["$scope", "$attrs", "$parse", "$interpolate", "$timeout", "$log", "dateFilter", "datepickerConfig", function(e, t, n, a, i, r, o, l) {
	var s = this,
		c = {
			$setViewValue: angular.noop
		};
	this.modes = ["day", "month", "year"], angular.forEach(["formatDay", "formatMonth", "formatYear", "formatDayHeader", "formatDayTitle", "formatMonthTitle", "minMode", "maxMode", "showWeeks", "startingDay", "yearRange"], function(n, i) {
		s[n] = angular.isDefined(t[n]) ? 8 > i ? a(t[n])(e.$parent) : e.$parent.$eval(t[n]) : l[n]
	}), angular.forEach(["minDate", "maxDate"], function(a) {
		t[a] ? e.$parent.$watch(n(t[a]), function(e) {
			s[a] = e ? new Date(e) : null, s.refreshView()
		}) : s[a] = l[a] ? new Date(l[a]) : null
	}), e.datepickerMode = e.datepickerMode || l.datepickerMode, e.uniqueId = "datepicker-" + e.$id + "-" + Math.floor(1e4 * Math.random()), this.activeDate = angular.isDefined(t.initDate) ? e.$parent.$eval(t.initDate) : new Date, e.isActive = function(t) {
		return 0 === s.compare(t.date, s.activeDate) ? (e.activeDateId = t.uid, !0) : !1
	}, this.init = function(e) {
		c = e, c.$render = function() {
			s.render()
		}
	}, this.render = function() {
		if (c.$modelValue) {
			var e = new Date(c.$modelValue),
				t = !isNaN(e);
			t ? this.activeDate = e : r.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.'), c.$setValidity("date", t)
		}
		this.refreshView()
	}, this.refreshView = function() {
		if (this.element) {
			this._refreshView();
			var e = c.$modelValue ? new Date(c.$modelValue) : null;
			c.$setValidity("date-disabled", !e || this.element && !this.isDisabled(e))
		}
	}, this.createDateObject = function(e, t) {
		var n = c.$modelValue ? new Date(c.$modelValue) : null;
		return {
			date: e,
			label: o(e, t),
			selected: n && 0 === this.compare(e, n),
			disabled: this.isDisabled(e),
			current: 0 === this.compare(e, new Date)
		}
	}, this.isDisabled = function(n) {
		return this.minDate && this.compare(n, this.minDate) < 0 || this.maxDate && this.compare(n, this.maxDate) > 0 || t.dateDisabled && e.dateDisabled({
			date: n,
			mode: e.datepickerMode
		})
	}, this.split = function(e, t) {
		for (var n = []; e.length > 0;) n.push(e.splice(0, t));
		return n
	}, e.select = function(t) {
		if (e.datepickerMode === s.minMode) {
			var n = c.$modelValue ? new Date(c.$modelValue) : new Date(0, 0, 0, 0, 0, 0, 0);
			n.setFullYear(t.getFullYear(), t.getMonth(), t.getDate()), c.$setViewValue(n), c.$render()
		} else s.activeDate = t, e.datepickerMode = s.modes[s.modes.indexOf(e.datepickerMode) - 1]
	}, e.move = function(e) {
		var t = s.activeDate.getFullYear() + e * (s.step.years || 0),
			n = s.activeDate.getMonth() + e * (s.step.months || 0);
		s.activeDate.setFullYear(t, n, 1), s.refreshView()
	}, e.toggleMode = function(t) {
		t = t || 1, e.datepickerMode === s.maxMode && 1 === t || e.datepickerMode === s.minMode && -1 === t || (e.datepickerMode = s.modes[s.modes.indexOf(e.datepickerMode) + t])
	}, e.keys = {
		13: "enter",
		32: "space",
		33: "pageup",
		34: "pagedown",
		35: "end",
		36: "home",
		37: "left",
		38: "up",
		39: "right",
		40: "down"
	};
	var u = function() {
		i(function() {
			s.element[0].focus()
		}, 0, !1)
	};
	e.$on("datepicker.focus", u), e.keydown = function(t) {
		var n = e.keys[t.which];
		if (n && !t.shiftKey && !t.altKey) if (t.preventDefault(), t.stopPropagation(), "enter" === n || "space" === n) {
			if (s.isDisabled(s.activeDate)) return;
			e.select(s.activeDate), u()
		} else !t.ctrlKey || "up" !== n && "down" !== n ? (s.handleKeyDown(n, t), s.refreshView()) : (e.toggleMode("up" === n ? 1 : -1), u())
	}
}]).directive("datepicker", function() {
	return {
		restrict: "EA",
		replace: !0,
		templateUrl: "template/datepicker/datepicker.html",
		scope: {
			datepickerMode: "=?",
			dateDisabled: "&"
		},
		require: ["datepicker", "?^ngModel"],
		controller: "DatepickerController",
		link: function(e, t, n, a) {
			var i = a[0],
				r = a[1];
			r && i.init(r)
		}
	}
}).directive("daypicker", ["dateFilter", function(e) {
	return {
		restrict: "EA",
		replace: !0,
		templateUrl: "template/datepicker/day.html",
		require: "^datepicker",
		link: function(t, n, a, i) {
			function r(e, t) {
				return 1 !== t || e % 4 !== 0 || e % 100 === 0 && e % 400 !== 0 ? s[t] : 29
			}
			function o(e, t) {
				var n = new Array(t),
					a = new Date(e),
					i = 0;
				for (a.setHours(12); t > i;) n[i++] = new Date(a), a.setDate(a.getDate() + 1);
				return n
			}
			function l(e) {
				var t = new Date(e);
				t.setDate(t.getDate() + 4 - (t.getDay() || 7));
				var n = t.getTime();
				return t.setMonth(0), t.setDate(1), Math.floor(Math.round((n - t) / 864e5) / 7) + 1
			}
			t.showWeeks = i.showWeeks, i.step = {
				months: 1
			}, i.element = n;
			var s = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
			i._refreshView = function() {
				var n = i.activeDate.getFullYear(),
					a = i.activeDate.getMonth(),
					r = new Date(n, a, 1),
					s = i.startingDay - r.getDay(),
					c = s > 0 ? 7 - s : -s,
					u = new Date(r);
				c > 0 && u.setDate(-c + 1);
				for (var p = o(u, 42), d = 0; 42 > d; d++) p[d] = angular.extend(i.createDateObject(p[d], i.formatDay), {
					secondary: p[d].getMonth() !== a,
					uid: t.uniqueId + "-" + d
				});
				t.labels = new Array(7);
				for (var g = 0; 7 > g; g++) t.labels[g] = {
					abbr: e(p[g].date, i.formatDayHeader),
					full: e(p[g].date, "EEEE")
				};
				if (t.title = e(i.activeDate, i.formatDayTitle), t.rows = i.split(p, 7), t.showWeeks) {
					t.weekNumbers = [];
					for (var m = l(t.rows[0][0].date), f = t.rows.length; t.weekNumbers.push(m++) < f;);
				}
			}, i.compare = function(e, t) {
				return new Date(e.getFullYear(), e.getMonth(), e.getDate()) - new Date(t.getFullYear(), t.getMonth(), t.getDate())
			}, i.handleKeyDown = function(e) {
				var t = i.activeDate.getDate();
				if ("left" === e) t -= 1;
				else if ("up" === e) t -= 7;
				else if ("right" === e) t += 1;
				else if ("down" === e) t += 7;
				else if ("pageup" === e || "pagedown" === e) {
					var n = i.activeDate.getMonth() + ("pageup" === e ? -1 : 1);
					i.activeDate.setMonth(n, 1), t = Math.min(r(i.activeDate.getFullYear(), i.activeDate.getMonth()), t)
				} else "home" === e ? t = 1 : "end" === e && (t = r(i.activeDate.getFullYear(), i.activeDate.getMonth()));
				i.activeDate.setDate(t)
			}, i.refreshView()
		}
	}
}]).directive("monthpicker", ["dateFilter", function(e) {
	return {
		restrict: "EA",
		replace: !0,
		templateUrl: "template/datepicker/month.html",
		require: "^datepicker",
		link: function(t, n, a, i) {
			i.step = {
				years: 1
			}, i.element = n, i._refreshView = function() {
				for (var n = new Array(12), a = i.activeDate.getFullYear(), r = 0; 12 > r; r++) n[r] = angular.extend(i.createDateObject(new Date(a, r, 1), i.formatMonth), {
					uid: t.uniqueId + "-" + r
				});
				t.title = e(i.activeDate, i.formatMonthTitle), t.rows = i.split(n, 3)
			}, i.compare = function(e, t) {
				return new Date(e.getFullYear(), e.getMonth()) - new Date(t.getFullYear(), t.getMonth())
			}, i.handleKeyDown = function(e) {
				var t = i.activeDate.getMonth();
				if ("left" === e) t -= 1;
				else if ("up" === e) t -= 3;
				else if ("right" === e) t += 1;
				else if ("down" === e) t += 3;
				else if ("pageup" === e || "pagedown" === e) {
					var n = i.activeDate.getFullYear() + ("pageup" === e ? -1 : 1);
					i.activeDate.setFullYear(n)
				} else "home" === e ? t = 0 : "end" === e && (t = 11);
				i.activeDate.setMonth(t)
			}, i.refreshView()
		}
	}
}]).directive("yearpicker", ["dateFilter", function() {
	return {
		restrict: "EA",
		replace: !0,
		templateUrl: "template/datepicker/year.html",
		require: "^datepicker",
		link: function(e, t, n, a) {
			function i(e) {
				return parseInt((e - 1) / r, 10) * r + 1
			}
			var r = a.yearRange;
			a.step = {
				years: r
			}, a.element = t, a._refreshView = function() {
				for (var t = new Array(r), n = 0, o = i(a.activeDate.getFullYear()); r > n; n++) t[n] = angular.extend(a.createDateObject(new Date(o + n, 0, 1), a.formatYear), {
					uid: e.uniqueId + "-" + n
				});
				e.title = [t[0].label, t[r - 1].label].join(" - "), e.rows = a.split(t, 5)
			}, a.compare = function(e, t) {
				return e.getFullYear() - t.getFullYear()
			}, a.handleKeyDown = function(e) {
				var t = a.activeDate.getFullYear();
				"left" === e ? t -= 1 : "up" === e ? t -= 5 : "right" === e ? t += 1 : "down" === e ? t += 5 : "pageup" === e || "pagedown" === e ? t += ("pageup" === e ? -1 : 1) * a.step.years : "home" === e ? t = i(a.activeDate.getFullYear()) : "end" === e && (t = i(a.activeDate.getFullYear()) + r - 1), a.activeDate.setFullYear(t)
			}, a.refreshView()
		}
	}
}]).constant("datepickerPopupConfig", {
	datepickerPopup: "yyyy-MM-dd",
	currentText: "Today",
	clearText: "Clear",
	closeText: "Done",
	closeOnDateSelection: !0,
	appendToBody: !1,
	showButtonBar: !0
}).directive("datepickerPopup", ["$compile", "$parse", "$document", "$position", "dateFilter", "dateParser", "datepickerPopupConfig", function(e, t, n, a, i, r, o) {
	return {
		restrict: "EA",
		require: "ngModel",
		scope: {
			isOpen: "=?",
			currentText: "@",
			clearText: "@",
			closeText: "@",
			dateDisabled: "&"
		},
		link: function(l, s, c, u) {
			function p(e) {
				return e.replace(/([A-Z])/g, function(e) {
					return "-" + e.toLowerCase()
				})
			}
			function d(e) {
				if (e) {
					if (angular.isDate(e) && !isNaN(e)) return u.$setValidity("date", !0), e;
					if (angular.isString(e)) {
						var t = r.parse(e, g) || new Date(e);
						return isNaN(t) ? void u.$setValidity("date", !1) : (u.$setValidity("date", !0), t)
					}
					return void u.$setValidity("date", !1)
				}
				return u.$setValidity("date", !0), null
			}
			var g, m = angular.isDefined(c.closeOnDateSelection) ? l.$parent.$eval(c.closeOnDateSelection) : o.closeOnDateSelection,
				f = angular.isDefined(c.datepickerAppendToBody) ? l.$parent.$eval(c.datepickerAppendToBody) : o.appendToBody;
			l.showButtonBar = angular.isDefined(c.showButtonBar) ? l.$parent.$eval(c.showButtonBar) : o.showButtonBar, l.getText = function(e) {
				return l[e + "Text"] || o[e + "Text"]
			}, c.$observe("datepickerPopup", function(e) {
				g = e || o.datepickerPopup, u.$render()
			});
			var h = angular.element("<div datepicker-popup-wrap><div datepicker></div></div>");
			h.attr({
				"ng-model": "date",
				"ng-change": "dateSelection()"
			});
			var v = angular.element(h.children()[0]);
			c.datepickerOptions && angular.forEach(l.$parent.$eval(c.datepickerOptions), function(e, t) {
				v.attr(p(t), e)
			}), l.watchData = {}, angular.forEach(["minDate", "maxDate", "datepickerMode"], function(e) {
				if (c[e]) {
					var n = t(c[e]);
					if (l.$parent.$watch(n, function(t) {
						l.watchData[e] = t
					}), v.attr(p(e), "watchData." + e), "datepickerMode" === e) {
						var a = n.assign;
						l.$watch("watchData." + e, function(e, t) {
							e !== t && a(l.$parent, e)
						})
					}
				}
			}), c.dateDisabled && v.attr("date-disabled", "dateDisabled({ date: date, mode: mode })"), u.$parsers.unshift(d), l.dateSelection = function(e) {
				angular.isDefined(e) && (l.date = e), u.$setViewValue(l.date), u.$render(), m && (l.isOpen = !1, s[0].focus())
			}, s.bind("input change keyup", function() {
				l.$apply(function() {
					l.date = u.$modelValue
				})
			}), u.$render = function() {
				var e = u.$viewValue ? i(u.$viewValue, g) : "";
				s.val(e), l.date = d(u.$modelValue)
			};
			var b = function(e) {
				l.isOpen && e.target !== s[0] && l.$apply(function() {
					l.isOpen = !1
				})
			}, $ = function(e) {
				l.keydown(e)
			};
			s.bind("keydown", $), l.keydown = function(e) {
				27 === e.which ? (e.preventDefault(), e.stopPropagation(), l.close()) : 40 !== e.which || l.isOpen || (l.isOpen = !0)
			}, l.$watch("isOpen", function(e) {
				e ? (l.$broadcast("datepicker.focus"), l.position = f ? a.offset(s) : a.position(s), l.position.top = l.position.top + s.prop("offsetHeight"), n.bind("click", b)) : n.unbind("click", b)
			}), l.select = function(e) {
				if ("today" === e) {
					var t = new Date;
					angular.isDate(u.$modelValue) ? (e = new Date(u.$modelValue), e.setFullYear(t.getFullYear(), t.getMonth(), t.getDate())) : e = new Date(t.setHours(0, 0, 0, 0))
				}
				l.dateSelection(e)
			}, l.close = function() {
				l.isOpen = !1, s[0].focus()
			};
			var y = e(h)(l);
			h.remove(), f ? n.find("body").append(y) : s.after(y), l.$on("$destroy", function() {
				y.remove(), s.unbind("keydown", $), n.unbind("click", b)
			})
		}
	}
}]).directive("datepickerPopupWrap", function() {
	return {
		restrict: "EA",
		replace: !0,
		transclude: !0,
		templateUrl: "template/datepicker/popup.html",
		link: function(e, t) {
			t.bind("click", function(e) {
				e.preventDefault(), e.stopPropagation()
			})
		}
	}
}), angular.module("ui.bootstrap.dropdown", []).constant("dropdownConfig", {
	openClass: "open"
}).service("dropdownService", ["$document", function(e) {
	var t = null;
	this.open = function(i) {
		t || (e.bind("click", n), e.bind("keydown", a)), t && t !== i && (t.isOpen = !1), t = i
	}, this.close = function(i) {
		t === i && (t = null, e.unbind("click", n), e.unbind("keydown", a))
	};
	var n = function(e) {
		if (t) {
			var n = t.getToggleElement();
			e && n && n[0].contains(e.target) || t.$apply(function() {
				t.isOpen = !1
			})
		}
	}, a = function(e) {
		27 === e.which && (t.focusToggleElement(), n())
	}
}]).controller("DropdownController", ["$scope", "$attrs", "$parse", "dropdownConfig", "dropdownService", "$animate", function(e, t, n, a, i, r) {
	var o, l = this,
		s = e.$new(),
		c = a.openClass,
		u = angular.noop,
		p = t.onToggle ? n(t.onToggle) : angular.noop;
	this.init = function(a) {
		l.$element = a, t.isOpen && (o = n(t.isOpen), u = o.assign, e.$watch(o, function(e) {
			s.isOpen = !! e
		}))
	}, this.toggle = function(e) {
		return s.isOpen = arguments.length ? !! e : !s.isOpen
	}, this.isOpen = function() {
		return s.isOpen
	}, s.getToggleElement = function() {
		return l.toggleElement
	}, s.focusToggleElement = function() {
		l.toggleElement && l.toggleElement[0].focus()
	}, s.$watch("isOpen", function(t, n) {
		r[t ? "addClass" : "removeClass"](l.$element, c), t ? (s.focusToggleElement(), i.open(s)) : i.close(s), u(e, t), angular.isDefined(t) && t !== n && p(e, {
			open: !! t
		})
	}), e.$on("$locationChangeSuccess", function() {
		s.isOpen = !1
	}), e.$on("$destroy", function() {
		s.$destroy()
	})
}]).directive("dropdown", function() {
	return {
		controller: "DropdownController",
		link: function(e, t, n, a) {
			a.init(t)
		}
	}
}).directive("dropdownToggle", function() {
	return {
		require: "?^dropdown",
		link: function(e, t, n, a) {
			if (a) {
				a.toggleElement = t;
				var i = function(i) {
					i.preventDefault(), t.hasClass("disabled") || n.disabled || e.$apply(function() {
						a.toggle()
					})
				};
				t.bind("click", i), t.attr({
					"aria-haspopup": !0,
					"aria-expanded": !1
				}), e.$watch(a.isOpen, function(e) {
					t.attr("aria-expanded", !! e)
				}), e.$on("$destroy", function() {
					t.unbind("click", i)
				})
			}
		}
	}
}), angular.module("ui.bootstrap.modal", ["ui.bootstrap.transition"]).factory("$$stackedMap", function() {
	return {
		createNew: function() {
			var e = [];
			return {
				add: function(t, n) {
					e.push({
						key: t,
						value: n
					})
				},
				get: function(t) {
					for (var n = 0; n < e.length; n++) if (t == e[n].key) return e[n]
				},
				keys: function() {
					for (var t = [], n = 0; n < e.length; n++) t.push(e[n].key);
					return t
				},
				top: function() {
					return e[e.length - 1]
				},
				remove: function(t) {
					for (var n = -1, a = 0; a < e.length; a++) if (t == e[a].key) {
						n = a;
						break
					}
					return e.splice(n, 1)[0]
				},
				removeTop: function() {
					return e.splice(e.length - 1, 1)[0]
				},
				length: function() {
					return e.length
				}
			}
		}
	}
}).directive("modalBackdrop", ["$timeout", function(e) {
	return {
		restrict: "EA",
		replace: !0,
		templateUrl: "template/modal/backdrop.html",
		link: function(t, n, a) {
			t.backdropClass = a.backdropClass || "", t.animate = !1, e(function() {
				t.animate = !0
			})
		}
	}
}]).directive("modalWindow", ["$modalStack", "$timeout", function(e, t) {
	return {
		restrict: "EA",
		scope: {
			index: "@",
			animate: "="
		},
		replace: !0,
		transclude: !0,
		templateUrl: function(e, t) {
			return t.templateUrl || "template/modal/window.html"
		},
		link: function(n, a, i) {
			a.addClass(i.windowClass || ""), n.size = i.size, t(function() {
				n.animate = !0, a[0].querySelectorAll("[autofocus]").length || a[0].focus()
			}), n.close = function(t) {
				var n = e.getTop();
				n && n.value.backdrop && "static" != n.value.backdrop && t.target === t.currentTarget && (t.preventDefault(), t.stopPropagation(), e.dismiss(n.key, "backdrop click"))
			}
		}
	}
}]).directive("modalTransclude", function() {
	return {
		link: function(e, t, n, a, i) {
			i(e.$parent, function(e) {
				t.empty(), t.append(e)
			})
		}
	}
}).factory("$modalStack", ["$transition", "$timeout", "$document", "$compile", "$rootScope", "$$stackedMap", function(e, t, n, a, i, r) {
	function o() {
		for (var e = -1, t = g.keys(), n = 0; n < t.length; n++) g.get(t[n]).value.backdrop && (e = n);
		return e
	}
	function l(e) {
		var t = n.find("body").eq(0),
			a = g.get(e).value;
		g.remove(e), c(a.modalDomEl, a.modalScope, 300, function() {
			a.modalScope.$destroy(), t.toggleClass(d, g.length() > 0), s()
		})
	}
	function s() {
		if (u && -1 == o()) {
			var e = p;
			c(u, p, 150, function() {
				e.$destroy(), e = null
			}), u = void 0, p = void 0
		}
	}
	function c(n, a, i, r) {
		function o() {
			o.done || (o.done = !0, n.remove(), r && r())
		}
		a.animate = !1;
		var l = e.transitionEndEventName;
		if (l) {
			var s = t(o, i);
			n.bind(l, function() {
				t.cancel(s), o(), a.$apply()
			})
		} else t(o)
	}
	var u, p, d = "modal-open",
		g = r.createNew(),
		m = {};
	return i.$watch(o, function(e) {
		p && (p.index = e)
	}), n.bind("keydown", function(e) {
		var t;
		27 === e.which && (t = g.top(), t && t.value.keyboard && (e.preventDefault(), i.$apply(function() {
			m.dismiss(t.key, "escape key press")
		})))
	}), m.open = function(e, t) {
		g.add(e, {
			deferred: t.deferred,
			modalScope: t.scope,
			backdrop: t.backdrop,
			keyboard: t.keyboard
		});
		var r = n.find("body").eq(0),
			l = o();
		if (l >= 0 && !u) {
			p = i.$new(!0), p.index = l;
			var s = angular.element("<div modal-backdrop></div>");
			s.attr("backdrop-class", t.backdropClass), u = a(s)(p), r.append(u)
		}
		var c = angular.element("<div modal-window></div>");
		c.attr({
			"template-url": t.windowTemplateUrl,
			"window-class": t.windowClass,
			size: t.size,
			index: g.length() - 1,
			animate: "animate"
		}).html(t.content);
		var m = a(c)(t.scope);
		g.top().value.modalDomEl = m, r.append(m), r.addClass(d)
	}, m.close = function(e, t) {
		var n = g.get(e);
		n && (n.value.deferred.resolve(t), l(e))
	}, m.dismiss = function(e, t) {
		var n = g.get(e);
		n && (n.value.deferred.reject(t), l(e))
	}, m.dismissAll = function(e) {
		for (var t = this.getTop(); t;) this.dismiss(t.key, e), t = this.getTop()
	}, m.getTop = function() {
		return g.top()
	}, m
}]).provider("$modal", function() {
	var e = {
		options: {
			backdrop: !0,
			keyboard: !0
		},
		$get: ["$injector", "$rootScope", "$q", "$http", "$templateCache", "$controller", "$modalStack", function(t, n, a, i, r, o, l) {
			function s(e) {
				return e.template ? a.when(e.template) : i.get(angular.isFunction(e.templateUrl) ? e.templateUrl() : e.templateUrl, {
					cache: r
				}).then(function(e) {
					return e.data
				})
			}
			function c(e) {
				var n = [];
				return angular.forEach(e, function(e) {
					(angular.isFunction(e) || angular.isArray(e)) && n.push(a.when(t.invoke(e)))
				}), n
			}
			var u = {};
			return u.open = function(t) {
				var i = a.defer(),
					r = a.defer(),
					u = {
						result: i.promise,
						opened: r.promise,
						close: function(e) {
							l.close(u, e)
						},
						dismiss: function(e) {
							l.dismiss(u, e)
						}
					};
				if (t = angular.extend({}, e.options, t), t.resolve = t.resolve || {}, !t.template && !t.templateUrl) throw new Error("One of template or templateUrl options is required.");
				var p = a.all([s(t)].concat(c(t.resolve)));
				return p.then(function(e) {
					var a = (t.scope || n).$new();
					a.$close = u.close, a.$dismiss = u.dismiss;
					var r, s = {}, c = 1;
					t.controller && (s.$scope = a, s.$modalInstance = u, angular.forEach(t.resolve, function(t, n) {
						s[n] = e[c++]
					}), r = o(t.controller, s), t.controllerAs && (a[t.controllerAs] = r)), l.open(u, {
						scope: a,
						deferred: i,
						content: e[0],
						backdrop: t.backdrop,
						keyboard: t.keyboard,
						backdropClass: t.backdropClass,
						windowClass: t.windowClass,
						windowTemplateUrl: t.windowTemplateUrl,
						size: t.size
					})
				}, function(e) {
					i.reject(e)
				}), p.then(function() {
					r.resolve(!0)
				}, function() {
					r.reject(!1)
				}), u
			}, u
		}]
	};
	return e
}), angular.module("ui.bootstrap.pagination", []).controller("PaginationController", ["$scope", "$attrs", "$parse", function(e, t, n) {
	var a = this,
		i = {
			$setViewValue: angular.noop
		}, r = t.numPages ? n(t.numPages).assign : angular.noop;
	this.init = function(r, o) {
		i = r, this.config = o, i.$render = function() {
			a.render()
		}, t.itemsPerPage ? e.$parent.$watch(n(t.itemsPerPage), function(t) {
			a.itemsPerPage = parseInt(t, 10), e.totalPages = a.calculateTotalPages()
		}) : this.itemsPerPage = o.itemsPerPage
	}, this.calculateTotalPages = function() {
		var t = this.itemsPerPage < 1 ? 1 : Math.ceil(e.totalItems / this.itemsPerPage);
		return Math.max(t || 0, 1)
	}, this.render = function() {
		e.page = parseInt(i.$viewValue, 10) || 1
	}, e.selectPage = function(t) {
		e.page !== t && t > 0 && t <= e.totalPages && (i.$setViewValue(t), i.$render())
	}, e.getText = function(t) {
		return e[t + "Text"] || a.config[t + "Text"]
	}, e.noPrevious = function() {
		return 1 === e.page
	}, e.noNext = function() {
		return e.page === e.totalPages
	}, e.$watch("totalItems", function() {
		e.totalPages = a.calculateTotalPages()
	}), e.$watch("totalPages", function(t) {
		r(e.$parent, t), e.page > t ? e.selectPage(t) : i.$render()
	})
}]).constant("paginationConfig", {
	itemsPerPage: 10,
	boundaryLinks: !1,
	directionLinks: !0,
	firstText: "First",
	previousText: "Previous",
	nextText: "Next",
	lastText: "Last",
	rotate: !0
}).directive("pagination", ["$parse", "paginationConfig", function(e, t) {
	return {
		restrict: "EA",
		scope: {
			totalItems: "=",
			firstText: "@",
			previousText: "@",
			nextText: "@",
			lastText: "@"
		},
		require: ["pagination", "?ngModel"],
		controller: "PaginationController",
		templateUrl: "template/pagination/pagination.html",
		replace: !0,
		link: function(n, a, i, r) {
			function o(e, t, n) {
				return {
					number: e,
					text: t,
					active: n
				}
			}
			function l(e, t) {
				var n = [],
					a = 1,
					i = t,
					r = angular.isDefined(u) && t > u;
				r && (p ? (a = Math.max(e - Math.floor(u / 2), 1), i = a + u - 1, i > t && (i = t, a = i - u + 1)) : (a = (Math.ceil(e / u) - 1) * u + 1, i = Math.min(a + u - 1, t)));
				for (var l = a; i >= l; l++) {
					var s = o(l, l, l === e);
					n.push(s)
				}
				if (r && !p) {
					if (a > 1) {
						var c = o(a - 1, "...", !1);
						n.unshift(c)
					}
					if (t > i) {
						var d = o(i + 1, "...", !1);
						n.push(d)
					}
				}
				return n
			}
			var s = r[0],
				c = r[1];
			if (c) {
				var u = angular.isDefined(i.maxSize) ? n.$parent.$eval(i.maxSize) : t.maxSize,
					p = angular.isDefined(i.rotate) ? n.$parent.$eval(i.rotate) : t.rotate;
				n.boundaryLinks = angular.isDefined(i.boundaryLinks) ? n.$parent.$eval(i.boundaryLinks) : t.boundaryLinks, n.directionLinks = angular.isDefined(i.directionLinks) ? n.$parent.$eval(i.directionLinks) : t.directionLinks, s.init(c, t), i.maxSize && n.$parent.$watch(e(i.maxSize), function(e) {
					u = parseInt(e, 10), s.render()
				});
				var d = s.render;
				s.render = function() {
					d(), n.page > 0 && n.page <= n.totalPages && (n.pages = l(n.page, n.totalPages))
				}
			}
		}
	}
}]).constant("pagerConfig", {
	itemsPerPage: 10,
	previousText: "« Previous",
	nextText: "Next »",
	align: !0
}).directive("pager", ["pagerConfig", function(e) {
	return {
		restrict: "EA",
		scope: {
			totalItems: "=",
			previousText: "@",
			nextText: "@"
		},
		require: ["pager", "?ngModel"],
		controller: "PaginationController",
		templateUrl: "template/pagination/pager.html",
		replace: !0,
		link: function(t, n, a, i) {
			var r = i[0],
				o = i[1];
			o && (t.align = angular.isDefined(a.align) ? t.$parent.$eval(a.align) : e.align, r.init(o, e))
		}
	}
}]), angular.module("ui.bootstrap.tooltip", ["ui.bootstrap.position", "ui.bootstrap.bindHtml"]).provider("$tooltip", function() {
	function e(e) {
		var t = /[A-Z]/g,
			n = "-";
		return e.replace(t, function(e, t) {
			return (t ? n : "") + e.toLowerCase()
		})
	}
	var t = {
		placement: "top",
		animation: !0,
		popupDelay: 0
	}, n = {
		mouseenter: "mouseleave",
		click: "click",
		focus: "blur"
	}, a = {};
	this.options = function(e) {
		angular.extend(a, e)
	}, this.setTriggers = function(e) {
		angular.extend(n, e)
	}, this.$get = ["$window", "$compile", "$timeout", "$document", "$position", "$interpolate", function(i, r, o, l, s, c) {
		return function(i, u, p) {
			function d(e) {
				var t = e || g.trigger || p,
					a = n[t] || t;
				return {
					show: t,
					hide: a
				}
			}
			var g = angular.extend({}, t, a),
				m = e(i),
				f = c.startSymbol(),
				h = c.endSymbol(),
				v = "<div " + m + '-popup title="' + f + "title" + h + '" content="' + f + "content" + h + '" placement="' + f + "placement" + h + '" animation="animation" is-open="isOpen"></div>';
			return {
				restrict: "EA",
				compile: function() {
					var e = r(v);
					return function(t, n, a) {
						function r() {
							O.isOpen ? p() : c()
						}
						function c() {
							(!E || t.$eval(a[u + "Enable"])) && (b(), O.popupDelay ? M || (M = o(m, O.popupDelay, !1), M.then(function(e) {
								e()
							})) : m()())
						}
						function p() {
							t.$apply(function() {
								f()
							})
						}
						function m() {
							return M = null, D && (o.cancel(D), D = null), O.content ? (h(), k.css({
								top: 0,
								left: 0,
								display: "block"
							}), T ? l.find("body").append(k) : n.after(k), A(), O.isOpen = !0, O.$digest(), A) : angular.noop
						}
						function f() {
							O.isOpen = !1, o.cancel(M), M = null, O.animation ? D || (D = o(v, 500)) : v()
						}
						function h() {
							k && v(), x = O.$new(), k = e(x, angular.noop)
						}
						function v() {
							D = null, k && (k.remove(), k = null), x && (x.$destroy(), x = null)
						}
						function b() {
							$(), y()
						}
						function $() {
							var e = a[u + "Placement"];
							O.placement = angular.isDefined(e) ? e : g.placement
						}
						function y() {
							var e = a[u + "PopupDelay"],
								t = parseInt(e, 10);
							O.popupDelay = isNaN(t) ? g.popupDelay : t
						}
						function w() {
							var e = a[u + "Trigger"];
							P(), C = d(e), C.show === C.hide ? n.bind(C.show, r) : (n.bind(C.show, c), n.bind(C.hide, p))
						}
						var k, x, D, M, T = angular.isDefined(g.appendToBody) ? g.appendToBody : !1,
							C = d(void 0),
							E = angular.isDefined(a[u + "Enable"]),
							O = t.$new(!0),
							A = function() {
								var e = s.positionElements(n, k, O.placement, T);
								e.top += "px", e.left += "px", k.css(e)
							};
						O.isOpen = !1, a.$observe(i, function(e) {
							O.content = e, !e && O.isOpen && f()
						}), a.$observe(u + "Title", function(e) {
							O.title = e
						});
						var P = function() {
							n.unbind(C.show, c), n.unbind(C.hide, p)
						};
						w();
						var S = t.$eval(a[u + "Animation"]);
						O.animation = angular.isDefined(S) ? !! S : g.animation;
						var V = t.$eval(a[u + "AppendToBody"]);
						T = angular.isDefined(V) ? V : T, T && t.$on("$locationChangeSuccess", function() {
							O.isOpen && f()
						}), t.$on("$destroy", function() {
							o.cancel(D), o.cancel(M), P(), v(), O = null
						})
					}
				}
			}
		}
	}]
}).directive("tooltipPopup", function() {
	return {
		restrict: "EA",
		replace: !0,
		scope: {
			content: "@",
			placement: "@",
			animation: "&",
			isOpen: "&"
		},
		templateUrl: "template/tooltip/tooltip-popup.html"
	}
}).directive("tooltip", ["$tooltip", function(e) {
	return e("tooltip", "tooltip", "mouseenter")
}]).directive("tooltipHtmlUnsafePopup", function() {
	return {
		restrict: "EA",
		replace: !0,
		scope: {
			content: "@",
			placement: "@",
			animation: "&",
			isOpen: "&"
		},
		templateUrl: "template/tooltip/tooltip-html-unsafe-popup.html"
	}
}).directive("tooltipHtmlUnsafe", ["$tooltip", function(e) {
	return e("tooltipHtmlUnsafe", "tooltip", "mouseenter")
}]), angular.module("ui.bootstrap.popover", ["ui.bootstrap.tooltip"]).directive("popoverPopup", function() {
	return {
		restrict: "EA",
		replace: !0,
		scope: {
			title: "@",
			content: "@",
			placement: "@",
			animation: "&",
			isOpen: "&"
		},
		templateUrl: "template/popover/popover.html"
	}
}).directive("popover", ["$tooltip", function(e) {
	return e("popover", "popover", "click")
}]), angular.module("ui.bootstrap.progressbar", []).constant("progressConfig", {
	animate: !0,
	max: 100
}).controller("ProgressController", ["$scope", "$attrs", "progressConfig", function(e, t, n) {
	var a = this,
		i = angular.isDefined(t.animate) ? e.$parent.$eval(t.animate) : n.animate;
	this.bars = [], e.max = angular.isDefined(t.max) ? e.$parent.$eval(t.max) : n.max, this.addBar = function(t, n) {
		i || n.css({
			transition: "none"
		}), this.bars.push(t), t.$watch("value", function(n) {
			t.percent = +(100 * n / e.max).toFixed(2)
		}), t.$on("$destroy", function() {
			n = null, a.removeBar(t)
		})
	}, this.removeBar = function(e) {
		this.bars.splice(this.bars.indexOf(e), 1)
	}
}]).directive("progress", function() {
	return {
		restrict: "EA",
		replace: !0,
		transclude: !0,
		controller: "ProgressController",
		require: "progress",
		scope: {},
		templateUrl: "template/progressbar/progress.html"
	}
}).directive("bar", function() {
	return {
		restrict: "EA",
		replace: !0,
		transclude: !0,
		require: "^progress",
		scope: {
			value: "=",
			type: "@"
		},
		templateUrl: "template/progressbar/bar.html",
		link: function(e, t, n, a) {
			a.addBar(e, t)
		}
	}
}).directive("progressbar", function() {
	return {
		restrict: "EA",
		replace: !0,
		transclude: !0,
		controller: "ProgressController",
		scope: {
			value: "=",
			type: "@"
		},
		templateUrl: "template/progressbar/progressbar.html",
		link: function(e, t, n, a) {
			a.addBar(e, angular.element(t.children()[0]))
		}
	}
}), angular.module("ui.bootstrap.rating", []).constant("ratingConfig", {
	max: 5,
	stateOn: null,
	stateOff: null
}).controller("RatingController", ["$scope", "$attrs", "ratingConfig", function(e, t, n) {
	var a = {
		$setViewValue: angular.noop
	};
	this.init = function(i) {
		a = i, a.$render = this.render, this.stateOn = angular.isDefined(t.stateOn) ? e.$parent.$eval(t.stateOn) : n.stateOn, this.stateOff = angular.isDefined(t.stateOff) ? e.$parent.$eval(t.stateOff) : n.stateOff;
		var r = angular.isDefined(t.ratingStates) ? e.$parent.$eval(t.ratingStates) : new Array(angular.isDefined(t.max) ? e.$parent.$eval(t.max) : n.max);
		e.range = this.buildTemplateObjects(r)
	}, this.buildTemplateObjects = function(e) {
		for (var t = 0, n = e.length; n > t; t++) e[t] = angular.extend({
			index: t
		}, {
			stateOn: this.stateOn,
			stateOff: this.stateOff
		}, e[t]);
		return e
	}, e.rate = function(t) {
		!e.readonly && t >= 0 && t <= e.range.length && (a.$setViewValue(t), a.$render())
	}, e.enter = function(t) {
		e.readonly || (e.value = t), e.onHover({
			value: t
		})
	}, e.reset = function() {
		e.value = a.$viewValue, e.onLeave()
	}, e.onKeydown = function(t) {
		/(37|38|39|40)/.test(t.which) && (t.preventDefault(), t.stopPropagation(), e.rate(e.value + (38 === t.which || 39 === t.which ? 1 : -1)))
	}, this.render = function() {
		e.value = a.$viewValue
	}
}]).directive("rating", function() {
	return {
		restrict: "EA",
		require: ["rating", "ngModel"],
		scope: {
			readonly: "=?",
			onHover: "&",
			onLeave: "&"
		},
		controller: "RatingController",
		templateUrl: "template/rating/rating.html",
		replace: !0,
		link: function(e, t, n, a) {
			var i = a[0],
				r = a[1];
			r && i.init(r)
		}
	}
}), angular.module("ui.bootstrap.tabs", []).controller("TabsetController", ["$scope", function(e) {
	var t = this,
		n = t.tabs = e.tabs = [];
	t.select = function(e) {
		angular.forEach(n, function(t) {
			t.active && t !== e && (t.active = !1, t.onDeselect())
		}), e.active = !0, e.onSelect()
	}, t.addTab = function(e) {
		n.push(e), 1 === n.length ? e.active = !0 : e.active && t.select(e)
	}, t.removeTab = function(e) {
		var i = n.indexOf(e);
		if (e.active && n.length > 1 && !a) {
			var r = i == n.length - 1 ? i - 1 : i + 1;
			t.select(n[r])
		}
		n.splice(i, 1)
	};
	var a;
	e.$on("$destroy", function() {
		a = !0
	})
}]).directive("tabset", function() {
	return {
		restrict: "EA",
		transclude: !0,
		replace: !0,
		scope: {
			type: "@"
		},
		controller: "TabsetController",
		templateUrl: "template/tabs/tabset.html",
		link: function(e, t, n) {
			e.vertical = angular.isDefined(n.vertical) ? e.$parent.$eval(n.vertical) : !1, e.justified = angular.isDefined(n.justified) ? e.$parent.$eval(n.justified) : !1
		}
	}
}).directive("tab", ["$parse", function(e) {
	return {
		require: "^tabset",
		restrict: "EA",
		replace: !0,
		templateUrl: "template/tabs/tab.html",
		transclude: !0,
		scope: {
			active: "=?",
			heading: "@",
			onSelect: "&select",
			onDeselect: "&deselect"
		},
		controller: function() {},
		compile: function(t, n, a) {
			return function(t, n, i, r) {
				t.$watch("active", function(e) {
					e && r.select(t)
				}), t.disabled = !1, i.disabled && t.$parent.$watch(e(i.disabled), function(e) {
					t.disabled = !! e
				}), t.select = function() {
					t.disabled || (t.active = !0)
				}, r.addTab(t), t.$on("$destroy", function() {
					r.removeTab(t)
				}), t.$transcludeFn = a
			}
		}
	}
}]).directive("tabHeadingTransclude", [function() {
	return {
		restrict: "A",
		require: "^tab",
		link: function(e, t) {
			e.$watch("headingElement", function(e) {
				e && (t.html(""), t.append(e))
			})
		}
	}
}]).directive("tabContentTransclude", function() {
	function e(e) {
		return e.tagName && (e.hasAttribute("tab-heading") || e.hasAttribute("data-tab-heading") || "tab-heading" === e.tagName.toLowerCase() || "data-tab-heading" === e.tagName.toLowerCase())
	}
	return {
		restrict: "A",
		require: "^tabset",
		link: function(t, n, a) {
			var i = t.$eval(a.tabContentTransclude);
			i.$transcludeFn(i.$parent, function(t) {
				angular.forEach(t, function(t) {
					e(t) ? i.headingElement = t : n.append(t)
				})
			})
		}
	}
}), angular.module("ui.bootstrap.timepicker", []).constant("timepickerConfig", {
	hourStep: 1,
	minuteStep: 1,
	showMeridian: !0,
	meridians: null,
	readonlyInput: !1,
	mousewheel: !0
}).controller("TimepickerController", ["$scope", "$attrs", "$parse", "$log", "$locale", "timepickerConfig", function(e, t, n, a, i, r) {
	function o() {
		var t = parseInt(e.hours, 10),
			n = e.showMeridian ? t > 0 && 13 > t : t >= 0 && 24 > t;
		return n ? (e.showMeridian && (12 === t && (t = 0), e.meridian === f[1] && (t += 12)), t) : void 0
	}
	function l() {
		var t = parseInt(e.minutes, 10);
		return t >= 0 && 60 > t ? t : void 0
	}
	function s(e) {
		return angular.isDefined(e) && e.toString().length < 2 ? "0" + e : e
	}
	function c(e) {
		u(), m.$setViewValue(new Date(g)), p(e)
	}
	function u() {
		m.$setValidity("time", !0), e.invalidHours = !1, e.invalidMinutes = !1
	}
	function p(t) {
		var n = g.getHours(),
			a = g.getMinutes();
		e.showMeridian && (n = 0 === n || 12 === n ? 12 : n % 12), e.hours = "h" === t ? n : s(n), e.minutes = "m" === t ? a : s(a), e.meridian = g.getHours() < 12 ? f[0] : f[1]
	}
	function d(e) {
		var t = new Date(g.getTime() + 6e4 * e);
		g.setHours(t.getHours(), t.getMinutes()), c()
	}
	var g = new Date,
		m = {
			$setViewValue: angular.noop
		}, f = angular.isDefined(t.meridians) ? e.$parent.$eval(t.meridians) : r.meridians || i.DATETIME_FORMATS.AMPMS;
	this.init = function(n, a) {
		m = n, m.$render = this.render;
		var i = a.eq(0),
			o = a.eq(1),
			l = angular.isDefined(t.mousewheel) ? e.$parent.$eval(t.mousewheel) : r.mousewheel;
		l && this.setupMousewheelEvents(i, o), e.readonlyInput = angular.isDefined(t.readonlyInput) ? e.$parent.$eval(t.readonlyInput) : r.readonlyInput, this.setupInputEvents(i, o)
	};
	var h = r.hourStep;
	t.hourStep && e.$parent.$watch(n(t.hourStep), function(e) {
		h = parseInt(e, 10)
	});
	var v = r.minuteStep;
	t.minuteStep && e.$parent.$watch(n(t.minuteStep), function(e) {
		v = parseInt(e, 10)
	}), e.showMeridian = r.showMeridian, t.showMeridian && e.$parent.$watch(n(t.showMeridian), function(t) {
		if (e.showMeridian = !! t, m.$error.time) {
			var n = o(),
				a = l();
			angular.isDefined(n) && angular.isDefined(a) && (g.setHours(n), c())
		} else p()
	}), this.setupMousewheelEvents = function(t, n) {
		var a = function(e) {
			e.originalEvent && (e = e.originalEvent);
			var t = e.wheelDelta ? e.wheelDelta : -e.deltaY;
			return e.detail || t > 0
		};
		t.bind("mousewheel wheel", function(t) {
			e.$apply(a(t) ? e.incrementHours() : e.decrementHours()), t.preventDefault()
		}), n.bind("mousewheel wheel", function(t) {
			e.$apply(a(t) ? e.incrementMinutes() : e.decrementMinutes()), t.preventDefault()
		})
	}, this.setupInputEvents = function(t, n) {
		if (e.readonlyInput) return e.updateHours = angular.noop, void(e.updateMinutes = angular.noop);
		var a = function(t, n) {
			m.$setViewValue(null), m.$setValidity("time", !1), angular.isDefined(t) && (e.invalidHours = t), angular.isDefined(n) && (e.invalidMinutes = n)
		};
		e.updateHours = function() {
			var e = o();
			angular.isDefined(e) ? (g.setHours(e), c("h")) : a(!0)
		}, t.bind("blur", function() {
			!e.invalidHours && e.hours < 10 && e.$apply(function() {
				e.hours = s(e.hours)
			})
		}), e.updateMinutes = function() {
			var e = l();
			angular.isDefined(e) ? (g.setMinutes(e), c("m")) : a(void 0, !0)
		}, n.bind("blur", function() {
			!e.invalidMinutes && e.minutes < 10 && e.$apply(function() {
				e.minutes = s(e.minutes)
			})
		})
	}, this.render = function() {
		var e = m.$modelValue ? new Date(m.$modelValue) : null;
		isNaN(e) ? (m.$setValidity("time", !1), a.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')) : (e && (g = e), u(), p())
	}, e.incrementHours = function() {
		d(60 * h)
	}, e.decrementHours = function() {
		d(60 * -h)
	}, e.incrementMinutes = function() {
		d(v)
	}, e.decrementMinutes = function() {
		d(-v)
	}, e.toggleMeridian = function() {
		d(720 * (g.getHours() < 12 ? 1 : -1))
	}
}]).directive("timepicker", function() {
	return {
		restrict: "EA",
		require: ["timepicker", "?^ngModel"],
		controller: "TimepickerController",
		replace: !0,
		scope: {},
		templateUrl: "template/timepicker/timepicker.html",
		link: function(e, t, n, a) {
			var i = a[0],
				r = a[1];
			r && i.init(r, t.find("input"))
		}
	}
}), angular.module("ui.bootstrap.typeahead", ["ui.bootstrap.position", "ui.bootstrap.bindHtml"]).factory("typeaheadParser", ["$parse", function(e) {
	var t = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;
	return {
		parse: function(n) {
			var a = n.match(t);
			if (!a) throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "' + n + '".');
			return {
				itemName: a[3],
				source: e(a[4]),
				viewMapper: e(a[2] || a[1]),
				modelMapper: e(a[1])
			}
		}
	}
}]).directive("typeahead", ["$compile", "$parse", "$q", "$timeout", "$document", "$position", "typeaheadParser", function(e, t, n, a, i, r, o) {
	var l = [9, 13, 27, 38, 40];
	return {
		require: "ngModel",
		link: function(s, c, u, p) {
			var d, g = s.$eval(u.typeaheadMinLength) || 1,
				m = s.$eval(u.typeaheadWaitMs) || 0,
				f = s.$eval(u.typeaheadEditable) !== !1,
				h = t(u.typeaheadLoading).assign || angular.noop,
				v = t(u.typeaheadOnSelect),
				b = u.typeaheadInputFormatter ? t(u.typeaheadInputFormatter) : void 0,
				$ = u.typeaheadAppendToBody ? s.$eval(u.typeaheadAppendToBody) : !1,
				y = s.$eval(u.typeaheadFocusFirst) !== !1,
				w = t(u.ngModel).assign,
				k = o.parse(u.typeahead),
				x = s.$new();
			s.$on("$destroy", function() {
				x.$destroy()
			});
			var D = "typeahead-" + x.$id + "-" + Math.floor(1e4 * Math.random());
			c.attr({
				"aria-autocomplete": "list",
				"aria-expanded": !1,
				"aria-owns": D
			});
			var M = angular.element("<div typeahead-popup></div>");
			M.attr({
				id: D,
				matches: "matches",
				active: "activeIdx",
				select: "select(activeIdx)",
				query: "query",
				position: "position"
			}), angular.isDefined(u.typeaheadTemplateUrl) && M.attr("template-url", u.typeaheadTemplateUrl);
			var T = function() {
				x.matches = [], x.activeIdx = -1, c.attr("aria-expanded", !1)
			}, C = function(e) {
				return D + "-option-" + e
			};
			x.$watch("activeIdx", function(e) {
				0 > e ? c.removeAttr("aria-activedescendant") : c.attr("aria-activedescendant", C(e))
			});
			var E = function(e) {
				var t = {
					$viewValue: e
				};
				h(s, !0), n.when(k.source(s, t)).then(function(n) {
					var a = e === p.$viewValue;
					if (a && d) if (n.length > 0) {
						x.activeIdx = y ? 0 : -1, x.matches.length = 0;
						for (var i = 0; i < n.length; i++) t[k.itemName] = n[i], x.matches.push({
							id: C(i),
							label: k.viewMapper(x, t),
							model: n[i]
						});
						x.query = e, x.position = $ ? r.offset(c) : r.position(c), x.position.top = x.position.top + c.prop("offsetHeight"), c.attr("aria-expanded", !0)
					} else T();
					a && h(s, !1)
				}, function() {
					T(), h(s, !1)
				})
			};
			T(), x.query = void 0;
			var O, A = function(e) {
				O = a(function() {
					E(e)
				}, m)
			}, P = function() {
				O && a.cancel(O)
			};
			p.$parsers.unshift(function(e) {
				return d = !0, e && e.length >= g ? m > 0 ? (P(), A(e)) : E(e) : (h(s, !1), P(), T()), f ? e : e ? void p.$setValidity("editable", !1) : (p.$setValidity("editable", !0), e)
			}), p.$formatters.push(function(e) {
				var t, n, a = {};
				return b ? (a.$model = e, b(s, a)) : (a[k.itemName] = e, t = k.viewMapper(s, a), a[k.itemName] = void 0, n = k.viewMapper(s, a), t !== n ? t : e)
			}), x.select = function(e) {
				var t, n, i = {};
				i[k.itemName] = n = x.matches[e].model, t = k.modelMapper(s, i), w(s, t), p.$setValidity("editable", !0), v(s, {
					$item: n,
					$model: t,
					$label: k.viewMapper(s, i)
				}), T(), a(function() {
					c[0].focus()
				}, 0, !1)
			}, c.bind("keydown", function(e) {
				0 !== x.matches.length && -1 !== l.indexOf(e.which) && (-1 != x.activeIdx || 13 !== e.which && 9 !== e.which) && (e.preventDefault(), 40 === e.which ? (x.activeIdx = (x.activeIdx + 1) % x.matches.length, x.$digest()) : 38 === e.which ? (x.activeIdx = (x.activeIdx > 0 ? x.activeIdx : x.matches.length) - 1, x.$digest()) : 13 === e.which || 9 === e.which ? x.$apply(function() {
					x.select(x.activeIdx)
				}) : 27 === e.which && (e.stopPropagation(), T(), x.$digest()))
			}), c.bind("blur", function() {
				d = !1
			});
			var S = function(e) {
				c[0] !== e.target && (T(), x.$digest())
			};
			i.bind("click", S), s.$on("$destroy", function() {
				i.unbind("click", S), $ && V.remove()
			});
			var V = e(M)(x);
			$ ? i.find("body").append(V) : c.after(V)
		}
	}
}]).directive("typeaheadPopup", function() {
	return {
		restrict: "EA",
		scope: {
			matches: "=",
			query: "=",
			active: "=",
			position: "=",
			select: "&"
		},
		replace: !0,
		templateUrl: "template/typeahead/typeahead-popup.html",
		link: function(e, t, n) {
			e.templateUrl = n.templateUrl, e.isOpen = function() {
				return e.matches.length > 0
			}, e.isActive = function(t) {
				return e.active == t
			}, e.selectActive = function(t) {
				e.active = t
			}, e.selectMatch = function(t) {
				e.select({
					activeIdx: t
				})
			}
		}
	}
}).directive("typeaheadMatch", ["$http", "$templateCache", "$compile", "$parse", function(e, t, n, a) {
	return {
		restrict: "EA",
		scope: {
			index: "=",
			match: "=",
			query: "="
		},
		link: function(i, r, o) {
			var l = a(o.templateUrl)(i.$parent) || "template/typeahead/typeahead-match.html";
			e.get(l, {
				cache: t
			}).success(function(e) {
				r.replaceWith(n(e.trim())(i))
			})
		}
	}
}]).filter("typeaheadHighlight", function() {
	function e(e) {
		return e.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1")
	}
	return function(t, n) {
		return n ? ("" + t).replace(new RegExp(e(n), "gi"), "<strong>$&</strong>") : t
	}
}), angular.module("template/accordion/accordion-group.html", []).run(["$templateCache", function(e) {
	e.put("template/accordion/accordion-group.html", '<div class="panel panel-default">\n  <div class="panel-heading">\n    <h4 class="panel-title">\n      <a href class="accordion-toggle" ng-click="toggleOpen()" accordion-transclude="heading"><span ng-class="{\'text-muted\': isDisabled}">{{heading}}</span></a>\n    </h4>\n  </div>\n  <div class="panel-collapse" collapse="!isOpen">\n	  <div class="panel-body" ng-transclude></div>\n  </div>\n</div>\n')
}]), angular.module("template/accordion/accordion.html", []).run(["$templateCache", function(e) {
	e.put("template/accordion/accordion.html", '<div class="panel-group" ng-transclude></div>')
}]), angular.module("template/alert/alert.html", []).run(["$templateCache", function(e) {
	e.put("template/alert/alert.html", '<div class="alert" ng-class="[\'alert-\' + (type || \'warning\'), closeable ? \'alert-dismissable\' : null]" role="alert">\n    <button ng-show="closeable" type="button" class="close" ng-click="close()">\n        <span aria-hidden="true">&times;</span>\n        <span class="sr-only">Close</span>\n    </button>\n    <div ng-transclude></div>\n</div>\n')
}]), angular.module("template/carousel/carousel.html", []).run(["$templateCache", function(e) {
	e.put("template/carousel/carousel.html", '<div ng-mouseenter="pause()" ng-mouseleave="play()" class="carousel" ng-swipe-right="prev()" ng-swipe-left="next()">\n    <ol class="carousel-indicators" ng-show="slides.length > 1">\n        <li ng-repeat="slide in slides track by $index" ng-class="{active: isActive(slide)}" ng-click="select(slide)"></li>\n    </ol>\n    <div class="carousel-inner" ng-transclude></div>\n    <a class="left carousel-control" ng-click="prev()" ng-show="slides.length > 1"><span class="glyphicon glyphicon-chevron-left"></span></a>\n    <a class="right carousel-control" ng-click="next()" ng-show="slides.length > 1"><span class="glyphicon glyphicon-chevron-right"></span></a>\n</div>\n')
}]), angular.module("template/carousel/slide.html", []).run(["$templateCache", function(e) {
	e.put("template/carousel/slide.html", "<div ng-class=\"{\n    'active': leaving || (active && !entering),\n    'prev': (next || active) && direction=='prev',\n    'next': (next || active) && direction=='next',\n    'right': direction=='prev',\n    'left': direction=='next'\n  }\" class=\"item text-center\" ng-transclude></div>\n")
}]), angular.module("template/datepicker/datepicker.html", []).run(["$templateCache", function(e) {
	e.put("template/datepicker/datepicker.html", '<div ng-switch="datepickerMode" role="application" ng-keydown="keydown($event)">\n  <daypicker ng-switch-when="day" tabindex="0"></daypicker>\n  <monthpicker ng-switch-when="month" tabindex="0"></monthpicker>\n  <yearpicker ng-switch-when="year" tabindex="0"></yearpicker>\n</div>')
}]), angular.module("template/datepicker/day.html", []).run(["$templateCache", function(e) {
	e.put("template/datepicker/day.html", '<table role="grid" aria-labelledby="{{uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n  <thead>\n    <tr>\n      <th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n      <th colspan="{{5 + showWeeks}}"><button id="{{uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>\n      <th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n    </tr>\n    <tr>\n      <th ng-show="showWeeks" class="text-center"></th>\n      <th ng-repeat="label in labels track by $index" class="text-center"><small aria-label="{{label.full}}">{{label.abbr}}</small></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr ng-repeat="row in rows track by $index">\n      <td ng-show="showWeeks" class="text-center h6"><em>{{ weekNumbers[$index] }}</em></td>\n      <td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{dt.uid}}" aria-disabled="{{!!dt.disabled}}">\n        <button type="button" style="width:100%;" class="btn btn-default btn-sm" ng-class="{\'btn-info\': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="{\'text-muted\': dt.secondary, \'text-info\': dt.current}">{{dt.label}}</span></button>\n      </td>\n    </tr>\n  </tbody>\n</table>\n')
}]), angular.module("template/datepicker/month.html", []).run(["$templateCache", function(e) {
	e.put("template/datepicker/month.html", '<table role="grid" aria-labelledby="{{uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n  <thead>\n    <tr>\n      <th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n      <th><button id="{{uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>\n      <th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr ng-repeat="row in rows track by $index">\n      <td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{dt.uid}}" aria-disabled="{{!!dt.disabled}}">\n        <button type="button" style="width:100%;" class="btn btn-default" ng-class="{\'btn-info\': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="{\'text-info\': dt.current}">{{dt.label}}</span></button>\n      </td>\n    </tr>\n  </tbody>\n</table>\n')
}]), angular.module("template/datepicker/popup.html", []).run(["$templateCache", function(e) {
	e.put("template/datepicker/popup.html", '<ul class="dropdown-menu" ng-style="{display: (isOpen && \'block\') || \'none\', top: position.top+\'px\', left: position.left+\'px\'}" ng-keydown="keydown($event)">\n	<li ng-transclude></li>\n	<li ng-if="showButtonBar" style="padding:10px 9px 2px">\n		<span class="btn-group pull-left">\n			<button type="button" class="btn btn-sm btn-info" ng-click="select(\'today\')">{{ getText(\'current\') }}</button>\n			<button type="button" class="btn btn-sm btn-danger" ng-click="select(null)">{{ getText(\'clear\') }}</button>\n		</span>\n		<button type="button" class="btn btn-sm btn-success pull-right" ng-click="close()">{{ getText(\'close\') }}</button>\n	</li>\n</ul>\n')
}]), angular.module("template/datepicker/year.html", []).run(["$templateCache", function(e) {
	e.put("template/datepicker/year.html", '<table role="grid" aria-labelledby="{{uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n  <thead>\n    <tr>\n      <th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n      <th colspan="3"><button id="{{uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>\n      <th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr ng-repeat="row in rows track by $index">\n      <td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{dt.uid}}" aria-disabled="{{!!dt.disabled}}">\n        <button type="button" style="width:100%;" class="btn btn-default" ng-class="{\'btn-info\': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="{\'text-info\': dt.current}">{{dt.label}}</span></button>\n      </td>\n    </tr>\n  </tbody>\n</table>\n')
}]), angular.module("template/modal/backdrop.html", []).run(["$templateCache", function(e) {
	e.put("template/modal/backdrop.html", '<div class="modal-backdrop fade {{ backdropClass }}"\n     ng-class="{in: animate}"\n     ng-style="{\'z-index\': 1040 + (index && 1 || 0) + index*10}"\n></div>\n')
}]), angular.module("template/modal/window.html", []).run(["$templateCache", function(e) {
	e.put("template/modal/window.html", '<div tabindex="-1" role="dialog" class="modal fade" ng-class="{in: animate}" ng-style="{\'z-index\': 1050 + index*10, display: \'block\'}" ng-click="close($event)">\n    <div class="modal-dialog" ng-class="{\'modal-sm\': size == \'sm\', \'modal-lg\': size == \'lg\'}"><div class="modal-content" modal-transclude></div></div>\n</div>')
}]), angular.module("template/pagination/pager.html", []).run(["$templateCache", function(e) {
	e.put("template/pagination/pager.html", '<ul class="pager">\n  <li ng-class="{disabled: noPrevious(), previous: align}"><a href ng-click="selectPage(page - 1)">{{getText(\'previous\')}}</a></li>\n  <li ng-class="{disabled: noNext(), next: align}"><a href ng-click="selectPage(page + 1)">{{getText(\'next\')}}</a></li>\n</ul>')
}]), angular.module("template/pagination/pagination.html", []).run(["$templateCache", function(e) {
	e.put("template/pagination/pagination.html", '<ul class="pagination">\n  <li ng-if="boundaryLinks" ng-class="{disabled: noPrevious()}"><a href ng-click="selectPage(1)">{{getText(\'first\')}}</a></li>\n  <li ng-if="directionLinks" ng-class="{disabled: noPrevious()}"><a href ng-click="selectPage(page - 1)">{{getText(\'previous\')}}</a></li>\n  <li ng-repeat="page in pages track by $index" ng-class="{active: page.active}"><a href ng-click="selectPage(page.number)">{{page.text}}</a></li>\n  <li ng-if="directionLinks" ng-class="{disabled: noNext()}"><a href ng-click="selectPage(page + 1)">{{getText(\'next\')}}</a></li>\n  <li ng-if="boundaryLinks" ng-class="{disabled: noNext()}"><a href ng-click="selectPage(totalPages)">{{getText(\'last\')}}</a></li>\n</ul>')
}]), angular.module("template/tooltip/tooltip-html-unsafe-popup.html", []).run(["$templateCache", function(e) {
	e.put("template/tooltip/tooltip-html-unsafe-popup.html", '<div class="tooltip {{placement}}" ng-class="{ in: isOpen(), fade: animation() }">\n  <div class="tooltip-arrow"></div>\n  <div class="tooltip-inner" bind-html-unsafe="content"></div>\n</div>\n')
}]), angular.module("template/tooltip/tooltip-popup.html", []).run(["$templateCache", function(e) {
	e.put("template/tooltip/tooltip-popup.html", '<div class="tooltip {{placement}}" ng-class="{ in: isOpen(), fade: animation() }">\n  <div class="tooltip-arrow"></div>\n  <div class="tooltip-inner" ng-bind="content"></div>\n</div>\n')
}]), angular.module("template/popover/popover.html", []).run(["$templateCache", function(e) {
	e.put("template/popover/popover.html", '<div class="popover {{placement}}" ng-class="{ in: isOpen(), fade: animation() }">\n  <div class="arrow"></div>\n\n  <div class="popover-inner">\n      <h3 class="popover-title" ng-bind="title" ng-show="title"></h3>\n      <div class="popover-content" ng-bind="content"></div>\n  </div>\n</div>\n')
}]), angular.module("template/progressbar/bar.html", []).run(["$templateCache", function(e) {
	e.put("template/progressbar/bar.html", '<div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: percent + \'%\'}" aria-valuetext="{{percent | number:0}}%" ng-transclude></div>')
}]), angular.module("template/progressbar/progress.html", []).run(["$templateCache", function(e) {
	e.put("template/progressbar/progress.html", '<div class="progress" ng-transclude></div>')
}]), angular.module("template/progressbar/progressbar.html", []).run(["$templateCache", function(e) {
	e.put("template/progressbar/progressbar.html", '<div class="progress">\n  <div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: percent + \'%\'}" aria-valuetext="{{percent | number:0}}%" ng-transclude></div>\n</div>')
}]), angular.module("template/rating/rating.html", []).run(["$templateCache", function(e) {
	e.put("template/rating/rating.html", '<span ng-mouseleave="reset()" ng-keydown="onKeydown($event)" tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="{{range.length}}" aria-valuenow="{{value}}">\n    <i ng-repeat="r in range track by $index" ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon" ng-class="$index < value && (r.stateOn || \'glyphicon-star\') || (r.stateOff || \'glyphicon-star-empty\')">\n        <span class="sr-only">({{ $index < value ? \'*\' : \' \' }})</span>\n    </i>\n</span>')
}]), angular.module("template/tabs/tab.html", []).run(["$templateCache", function(e) {
	e.put("template/tabs/tab.html", '<li ng-class="{active: active, disabled: disabled}">\n  <a href ng-click="select()" tab-heading-transclude>{{heading}}</a>\n</li>\n')
}]), angular.module("template/tabs/tabset.html", []).run(["$templateCache", function(e) {
	e.put("template/tabs/tabset.html", '<div>\n  <ul class="nav nav-{{type || \'tabs\'}}" ng-class="{\'nav-stacked\': vertical, \'nav-justified\': justified}" ng-transclude></ul>\n  <div class="tab-content">\n    <div class="tab-pane" \n         ng-repeat="tab in tabs" \n         ng-class="{active: tab.active}"\n         tab-content-transclude="tab">\n    </div>\n  </div>\n</div>\n')
}]), angular.module("template/timepicker/timepicker.html", []).run(["$templateCache", function(e) {
	e.put("template/timepicker/timepicker.html", '<table>\n	<tbody>\n		<tr class="text-center">\n			<td><a ng-click="incrementHours()" class="btn btn-link"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n			<td>&nbsp;</td>\n			<td><a ng-click="incrementMinutes()" class="btn btn-link"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n			<td ng-show="showMeridian"></td>\n		</tr>\n		<tr>\n			<td style="width:50px;" class="form-group" ng-class="{\'has-error\': invalidHours}">\n				<input type="text" ng-model="hours" ng-change="updateHours()" class="form-control text-center" ng-mousewheel="incrementHours()" ng-readonly="readonlyInput" maxlength="2">\n			</td>\n			<td>:</td>\n			<td style="width:50px;" class="form-group" ng-class="{\'has-error\': invalidMinutes}">\n				<input type="text" ng-model="minutes" ng-change="updateMinutes()" class="form-control text-center" ng-readonly="readonlyInput" maxlength="2">\n			</td>\n			<td ng-show="showMeridian"><button type="button" class="btn btn-default text-center" ng-click="toggleMeridian()">{{meridian}}</button></td>\n		</tr>\n		<tr class="text-center">\n			<td><a ng-click="decrementHours()" class="btn btn-link"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n			<td>&nbsp;</td>\n			<td><a ng-click="decrementMinutes()" class="btn btn-link"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n			<td ng-show="showMeridian"></td>\n		</tr>\n	</tbody>\n</table>\n')
}]), angular.module("template/typeahead/typeahead-match.html", []).run(["$templateCache", function(e) {
	e.put("template/typeahead/typeahead-match.html", '<a tabindex="-1" bind-html-unsafe="match.label | typeaheadHighlight:query"></a>')
}]), angular.module("template/typeahead/typeahead-popup.html", []).run(["$templateCache", function(e) {
	e.put("template/typeahead/typeahead-popup.html", '<ul class="dropdown-menu" ng-show="isOpen()" ng-style="{top: position.top+\'px\', left: position.left+\'px\'}" style="display: block;" role="listbox" aria-hidden="{{!isOpen()}}">\n    <li ng-repeat="match in matches track by $index" ng-class="{active: isActive($index) }" ng-mouseenter="selectActive($index)" ng-click="selectMatch($index)" role="option" id="{{match.id}}">\n        <div typeahead-match index="$index" match="match" query="query" template-url="templateUrl"></div>\n    </li>\n</ul>\n')
}]);
! function() {
	"use strict";
	angular.module("angular-loading-bar", ["cfp.loadingBarInterceptor"]), angular.module("chieffancypants.loadingBar", ["cfp.loadingBarInterceptor"]), angular.module("cfp.loadingBarInterceptor", ["cfp.loadingBar"]).config(["$httpProvider", function(e) {
		var n = ["$q", "$cacheFactory", "$timeout", "$rootScope", "cfpLoadingBar", function(n, a, t, r, i) {
			function c() {
				t.cancel(d), i.complete(), s = 0, l = 0
			}
			function o(n) {
				var t, r = a.get("$http"),
					i = e.defaults;
				!n.cache && !i.cache || n.cache === !1 || "GET" !== n.method && "JSONP" !== n.method || (t = angular.isObject(n.cache) ? n.cache : angular.isObject(i.cache) ? i.cache : r);
				var c = void 0 !== t ? void 0 !== t.get(n.url) : !1;
				return void 0 !== n.cached && c !== n.cached ? n.cached : (n.cached = c, c)
			}
			var d, l = 0,
				s = 0,
				u = i.latencyThreshold;
			return {
				request: function(e) {
					return e.ignoreLoadingBar || o(e) || (r.$broadcast("cfpLoadingBar:loading", {
						url: e.url
					}), 0 === l && (d = t(function() {
						i.start()
					}, u)), l++, i.set(s / l)), e
				},
				response: function(e) {
					return e.config.ignoreLoadingBar || o(e.config) || (s++, r.$broadcast("cfpLoadingBar:loaded", {
						url: e.config.url
					}), s >= l ? c() : i.set(s / l)), e
				},
				responseError: function(e) {
					return e.config.ignoreLoadingBar || o(e.config) || (s++, r.$broadcast("cfpLoadingBar:loaded", {
						url: e.config.url
					}), s >= l ? c() : i.set(s / l)), n.reject(e)
				}
			}
		}];
		e.interceptors.push(n)
	}]), angular.module("cfp.loadingBar", []).provider("cfpLoadingBar", function() {
		this.includeSpinner = !0, this.includeBar = !0, this.latencyThreshold = 100, this.startSize = .02, this.parentSelector = "body", this.spinnerTemplate = '<div id="loading-bar-spinner"><div class="spinner-icon"></div></div>', this.loadingBarTemplate = '<div id="loading-bar"><div class="bar"><div class="peg"></div></div></div>', this.$get = ["$injector", "$document", "$timeout", "$rootScope", function(e, n, a, t) {
			function r() {
				s || (s = e.get("$animate"));
				var r = n.find(g).eq(0);
				a.cancel(h), m || (t.$broadcast("cfpLoadingBar:started"), m = !0, S && s.enter(f, r), $ && s.enter(v, r), i(b))
			}
			function i(e) {
				if (m) {
					var n = 100 * e + "%";
					p.css("width", n), B = e, a.cancel(u), u = a(function() {
						c()
					}, 250)
				}
			}
			function c() {
				if (!(o() >= 1)) {
					var e = 0,
						n = o();
					e = n >= 0 && .25 > n ? (3 * Math.random() + 3) / 100 : n >= .25 && .65 > n ? 3 * Math.random() / 100 : n >= .65 && .9 > n ? 2 * Math.random() / 100 : n >= .9 && .99 > n ? .005 : 0;
					var a = o() + e;
					i(a)
				}
			}
			function o() {
				return B
			}
			function d() {
				B = 0, m = !1
			}
			function l() {
				s || (s = e.get("$animate")), t.$broadcast("cfpLoadingBar:completed"), i(1), a.cancel(h), h = a(function() {
					var e = s.leave(f, d);
					e && e.then && e.then(d), s.leave(v)
				}, 500)
			}
			var s, u, h, g = this.parentSelector,
				f = angular.element(this.loadingBarTemplate),
				p = f.find("div").eq(0),
				v = angular.element(this.spinnerTemplate),
				m = !1,
				B = 0,
				$ = this.includeSpinner,
				S = this.includeBar,
				b = this.startSize;
			return {
				start: r,
				set: i,
				status: o,
				inc: c,
				complete: l,
				includeSpinner: this.includeSpinner,
				latencyThreshold: this.latencyThreshold,
				parentSelector: this.parentSelector,
				startSize: this.startSize
			}
		}]
	})
}();